如愿

  • 一、selenium
    • 1.1简介
    • 1.2 下载
  • 二、自动化测试
  • 三、爬取名言
  • 四、爬取京东商品信息
  • 五、总结
  • 六、参考资料

一、selenium

1.1简介

  • Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成.Net、Java、Perl等不同语言的测试脚本。

1.2 下载

  • 可以直接用 pip install selenium 或者conda install selenium下载,但使用的话需要下载对应浏览器的驱动,这里是谷歌浏览器的驱动下载地址,需要选择自己的浏览器版本

下载:https://npm.taobao.org/mirrors/chromedriver/

二、自动化测试

  • 引入头文件并进入网页,驱动要加到环境变量里去,但好像加了也没用,这里就用的绝对路径
from selenium import webdriver
driver=webdriver.Chrome('D:\\software\\chromedriver_win32\\chromedriver.exe')
#进入网页
driver.get("https://www.baidu.com/")
  • 可以看到弹出来的谷歌浏览器
  • 按F12,进入控制台,再点击左上角,点一下变蓝之后再点击百度的搜索框,就会发现旁边就会定位到输入框对应的代码
  • 可以看到input的id为kw,通过driver的find_element_by_id,获取该元素,利用send_key填值
p_input = driver.find_element_by_id("kw")
p_input.send_keys('Java')
  • 效果
  • 根据刚刚的方式定位按钮,能看到按钮的id
  • 获取按钮并点击
#点击搜索按钮
p_btn=driver.find_element_by_id('su')
p_btn.click()
  • 效果

三、爬取名言

要求:到指定网站去爬取十句名言
网站:http://quotes.toscrape.com/js/

  • 导入包并进入网站
from bs4 import BeautifulSoup as bs
from selenium import webdriver
import csv
from selenium.webdriver.chrome.options import Options
from tqdm import tqdm#在电脑终端上显示进度,使代码可视化进度加快
driver=webdriver.Chrome('D:\\software\\chromedriver_win32\\chromedriver.exe')
driver.get('http://quotes.toscrape.com/js/')
  • 定义csv表头和文件路径,以及存放内容的列表
#定义csv表头
quote_head=['名言','作者']
#csv文件的路径和名字
quote_path='..\\source\\csv_file\\quote_csv.csv'
#存放内容的列表
quote_content=[]
  • 进入开发者模式,定位名言的位置,观察名言的位置
  • 定义写入csv的函数
'''
function_name:write_csv
parameters:   csv_head,csv_content,csv_path
csv_head:     the csv file head
csv_content:  the csv file content,the number of columns equal to length of csv_head
csv_path:     the csv file route
'''
def write_csv(csv_head,csv_content,csv_path):with open(csv_path, 'w', newline='',encoding='utf-8') as file:fileWriter =csv.writer(file)fileWriter.writerow(csv_head)fileWriter.writerows(csv_content)print('爬取信息成功')
  • 爬取信息并存入
###
#可以用find_elements_by_class_name获取所有含这个元素的集合(列表也有可能)
#然后把这个提取出来之后再用继续提取
quote=driver.find_elements_by_class_name("quote")
#将要收集的信息放在quote_content里
for i in tqdm(range(len(quote))):    quote_text=quote[i].find_element_by_class_name("text")quote_author=quote[i].find_element_by_class_name("author")temp=[]temp.append(quote_text.text)temp.append(quote_author.text)quote_content.append(temp)
write_csv(quote_head,quote_content,quote_path)
  • 文件内容

四、爬取京东商品信息

  • 老样子,导入包并进入京东搜索界面,同时sleep 3秒,行为要向人
from selenium import webdriver
import time
import csv
from tqdm import tqdm#在电脑终端上显示进度,使代码可视化进度加快
driver=webdriver.Chrome('D:\\software\\chromedriver_win32\\chromedriver.exe')
#加载页面
driver.get("https://www.jd.com/")
time.sleep(3)
  • 定义存放爬取信息的路径和存放内容的列表以及爬取数量
#定义存放图书信息的列表
goods_info_list=[]
#爬取200本
goods_num=200
#定义表头
goods_head=['价格','名字','链接']
#csv文件的路径和名字
goods_path='..\\source\\csv_file\\goods_csv.csv'
  • 进入开发者模式,定位搜索框,可以看到搜索框的id为key,获取按钮输入信息

  • 获取输入框并输入信息
#向输入框里输入Java
p_input = driver.find_element_by_id("key")
p_input.send_keys('Java')
  • 查看一下按钮的信息
  • 不能直接根据id这些直接定位,间接定位就好了
#button好像不能根据类名直接获取,先获取大的div,再获取按钮
from_filed=driver.find_element_by_class_name('form')
s_btn=from_filed.find_element_by_tag_name('button')
s_btn.click()#实现点击
  • 搜索之后获取价格也是同样的步骤,就不详细讲了,后面直接放代码了,这里是获取商品价格、名称、链接的函数
#获取商品价格、名称、链接
def get_prince_and_name(goods):#直接用css定位元素#获取价格goods_price=goods.find_element_by_css_selector('div.p-price')#获取元素goods_name=goods.find_element_by_css_selector('div.p-name')#获取链接goods_herf=goods.find_element_by_css_selector('div.p-img>a').get_property('href')return goods_price,goods_name,goods_herf
  • 定义滑动到页面底部函数,滑动到页面底部会刷出下一页,直接点下一页的话就是到下下页去了,也要沉睡一下,表现的像个人
def  drop_down(web_driver):#将滚动条调整至页面底部web_driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')time.sleep(3)
  • 定义爬取一页的函数
#获取爬取一页
def crawl_a_page(web_driver,goods_num):#获取图书列表drop_down(web_driver)goods_list=web_driver.find_elements_by_css_selector('div#J_goodsList>ul>li')#获取一个图书的价格、名字、链接for i in tqdm(range(len(goods_list))):goods_num-=1goods_price,goods_name,goods_herf=get_prince_and_name(goods_list[i])goods=[]goods.append(goods_price.text)goods.append(goods_name.text)goods.append(goods_herf)goods_info_list.append(goods)if goods_num==0:breakreturn goods_num
  • 爬出一定数量的商品,这要求的200本确实有点卡的难受
while goods_num!=0:goods_num=crawl_a_page(driver,goods_num)btn=driver.find_element_by_class_name('pn-next').click()time.sleep(1)
write_csv(goods_head,goods_info_list,goods_path)
  • 爬取的信息

五、总结

  • selenium是真的方便,如果有一点css基础,使用会更加得心应手,而且有一说一,ipnyb文件用VScode写是真的舒服。

六、参考资料

python+selenium 采集动态加载(下拉加载)的页面内容,自动下拉滚动条
Selenium之Css定位元素

selenium自动化测试和爬取名言和京东商品信息相关推荐

  1. Python高级特性与网络爬虫(二):使用Selenium自动化测试工具爬取一号店商品信息

    上一篇介绍了Ajax动态渲染的页面的分析和爬取,通过JavaScript动态渲染的页面的方式不只有ajax这一种,还有很多其他的方式,分析他们的网页结构和加密参数难度非常大,为了解决这样的页面的数据爬 ...

  2. python爬虫:Selenium模拟浏览器爬取淘宝商品信息

    1.数据提取前期网页分析 分析:淘宝网页数据也是通过Ajax技术获取的,但是淘宝的API接口参数比较复杂,可能包含加密密匙等参数:所以,想要通过自己构造API接口获取完整网页信息很难实现(可能只有部分 ...

  3. Python爬虫——京东商品信息 前期准备

    我们想用Python编写京东商品爬虫,其实很简单.可以使用Python的第三方爬虫框架(比如BeautifulSoup, requests等)结合学习HTTP请求和页面解析. 可以利用requests ...

  4. python爬取名言和商品信息

    文章目录 一,准备 二,代码 三,爬取指定网页http://quotes.toscrape.com/js/的名言 四,Selenium:requests+Selenum爬取京东物品 五,实验结果 六, ...

  5. Selenium介绍--实例爬取京东商品信息与图片

    目录 一.Selenium简介 二.Selenium组成 三.Selenium特点 四.Selenium的基本使用 1.下载所用浏览器需要的驱动 2.创建项目并导入依赖 3.入门 3.代码演示 五.实 ...

  6. layui获取input信息_python爬虫—用selenium爬取京东商品信息

    python爬虫--用selenium爬取京东商品信息 1.先附上效果图(我偷懒只爬了4页) 2.京东的网址https://www.jd.com/ 3.我这里是不加载图片,加快爬取速度,也可以用Hea ...

  7. Day06,selenium的剩余用法、万能登录破解和爬取京东商品信息,及破解极验滑动验证码...

    一.自动登录抽屉新热榜 from selenium import webdriver import timedriver = webdriver.Chrome(r'D:\BaiduNetdiskDow ...

  8. python爬取京东商品信息代码_爬取京东商品信息

    利用 BeautifulSoup + Requests 爬取京东商品信息并保存在Excel中 一.查看网页信息 打开京东商城,随便输入个商品,就选固态硬盘吧 先看看 URL 的规律,可以看到我们输入的 ...

  9. python爬虫爬取京东商品评价_python爬取京东商品信息及评论

    ''' 爬取京东商品信息: 功能: 通过chromeDrive进行模拟访问需要爬取的京东商品详情页(https://item.jd.com/100003196609.html)并且程序支持多个页面爬取 ...

最新文章

  1. 2022-2028年中国电梯行业市场调查及前瞻分析报告
  2. C#(WPF)去除事件中注册的事件处理方法!
  3. ArcGIS实现在线与线交叉处打断线(批量)
  4. Hotstar赛事直播编码组合优化
  5. why my pricing procedure is not determined in QHD 504
  6. c++ stl队列初始化_声明,初始化和访问向量| C ++ STL
  7. Grok解析 centos 的 nginx 原生格式日志
  8. OpenCV 4.1.2 发布,都有哪些新特性?
  9. min—width的使用
  10. 面试题17.04.消失的数字
  11. 启动白屏处理_App启动优化一顿操作猛如虎
  12. 3.2配置自定义的路径映射
  13. 图像增强算法效果评价指标及实现
  14. linux C语言基础学习总结
  15. Insyde uefi 隐藏设置_Android/iOS QQ 8.1.5测试版同时发布:私密会话可以隐藏
  16. 2018全国大学生电子竞赛D题代码和心得
  17. Game Master(思维 + 贪心)
  18. 听听那冷雨 余光中
  19. 曾国藩家训:三个地方看一个家庭的兴败
  20. [转载]受 Windows XP SP2 影响的软件列表

热门文章

  1. Linux初始化内存盘黑屏,详解linux内存磁盘初始化技术.doc
  2. OpenCV人脸识别文件haarcascade_frontalface_alt.xml
  3. 说说 df.describe(include=‘all‘)
  4. ActionScript编译器
  5. 可变悬挂与空气悬挂的区别_空气悬挂和可变悬架是同样功能吗?
  6. php 大于等于小于等于符号,小于等于符号≤
  7. 从数字货币估值学习区块链投资(行业观察)
  8. TIA博途SCL编程学习22_奖金计算
  9. es父子结构查询_elasticsearch 学习之父子关联查询 parent/child
  10. DLL的远程注入与远程卸载卸载