• 一、Selenium
    • 1.1 简介
    • 1.2 配置
  • 二、对百度进行自动化测试
    • 2.1 进入百度搜索界面
    • 2.2 自动填充百度网页的查询关键字并完成自动搜索
  • 三、爬取指定网页的名言
    • 3.1 找到元素
    • 3.2 代码实现
    • 3.3 运行结果
  • 四、Selenium:requests+Selenum爬取京东图书
    • 4.1 查看页面元素
    • 4.2 代码
    • 4.3 运行
  • 小小的总结
  • 参考文献

注:因为某些原因,原本的图片被判定为违规,咱就说很委屈。

Github源文件下载:https://github.com/longl118/Selenium

一、Selenium

1.1 简介

Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器)。

Selenium 可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生。

Selenium 自己不带浏览器,不支持浏览器的功能,它需要与第三方浏览器结合在一起才能使用。但是我们有时候需要让它内嵌在代码中运行,所以我们可以用一个叫 PhantomJS 的工具代替真实的浏览器。

1.2 配置

  • 安装依赖
    要开始使用selenium,需要安装一些依赖,打开Anaconda Prompt
conda install selenium

  • 安装驱动

要使用selenium去调用浏览器,还需要一个驱动,不同浏览器的webdriver需要独立安装
各浏览器下载地址:selenium官网驱动下载(https://www.selenium.dev/downloads/)

Firefox浏览器驱动:geckodriver

Chrome浏览器驱动:chromedriver , taobao备用地址

IE浏览器驱动:IEDriverServer

Edge浏览器驱动:MicrosoftWebDriver

Opera浏览器驱动:operadriver

PhantomJS浏览器驱动:phantomjs

  • 笔主这里下载 Chrome的 https://npm.taobao.org/mirrors/chromedriver/
  • 进去下载

  • 下载后解压,将解压的chromedriver.exe文件添加到系统的环境变量(不知道有没有用,大佬的博客都是这样做的)

二、对百度进行自动化测试

2.1 进入百度搜索界面

  • 在Anaconda的jupyter中写入代码
from selenium import webdriver
driver=webdriver.Chrome('D:\\***\\chromedriver.exe')
#进入网页
driver.get("https://www.baidu.com/")
  • 这时会报错。我们就再次打开Anaconda Prompt,安装webdriver_manager:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
#进入网页
driver.get("https://www.baidu.com/")
  • 运行得到:

  • 点击那个链接,得到:

2.2 自动填充百度网页的查询关键字并完成自动搜索

  • 在百度页面右键,点击 检查
  • 我们可以看到 搜索框的id是 kw

  • 用代码找到该元素,并填取相应的值
p_input = driver.find_element_by_id("kw")
p_input.send_keys('爱奇艺')
  • 运行结果

  • 同样找到搜索按钮的 id ,为su

  • 点击该按钮
#点击搜索按钮
p_btn=driver.find_element_by_id('su')
p_btn.click()
  • 运行结果

三、爬取指定网页的名言

3.1 找到元素

  • 网页:http://quotes.toscrape.com/page/1/
  • 选择一段名言,右键

  • 可以看到class为text

3.2 代码实现

  • 代码

from bs4 import BeautifulSoup as bs
from selenium import webdriver
import csv
from selenium.webdriver.chrome.options import Options
from tqdm import tqdm#在电脑终端上显示进度,使代码可视化进度加快
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('http://quotes.toscrape.com/js/')
#定义csv表头
quote_head=['名言','作者']
#csv文件的路径和名字
quote_path='C:\\Users\\28205\\Documents\\Tencent Files\\2820535964\\FileRecv\\quote_csv.csv'
#存放内容的列表
quote_content=[]'''
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='') 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)

3.3 运行结果

  • 运行结果

  • csv文件:

四、Selenium:requests+Selenum爬取京东图书

4.1 查看页面元素

  • 打开京东页面查看页面元素,分析需要爬取信息的标签id:

  • 搜索红楼梦,查看元素


4.2 代码

from selenium import webdriver
import time
import csv
from tqdm import tqdm#在电脑终端上显示进度,使代码可视化进度加快
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
#加载页面
driver.get("https://www.jd.com/")
time.sleep(3)#定义存放图书信息的列表
goods_info_list=[]
#爬取200本
goods_num=200
#定义表头
goods_head=['名字','价格','评价条数','店铺','链接']
#csv文件的路径和名字
goods_path='D:\\1azanshi\\a\\honglou1.csv'#向输入框里输入Java
p_input = driver.find_element_by_id("key")
p_input.send_keys('红楼梦')#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-name')#获取价格goods_name=goods.find_element_by_css_selector('div.p-price')#获取评价条数goods_commit=goods.find_element_by_css_selector('div.p-commit')#获取店铺名称goods_shopnum=goods.find_element_by_css_selector('div.p-shopnum')#获取链接goods_herf=goods.find_element_by_css_selector('div.p-img>a').get_property('href')return goods_name,goods_price,goods_commit,goods_shopnum,goods_herfdef  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_commit,goods_shopnum,goods_herf=get_prince_and_name(goods_list[i])goods=[]goods.append(goods_price.text)goods.append(goods_name.text)goods.append(goods_commit.text)goods.append(goods_shopnum.text)goods.append(goods_herf)goods_info_list.append(goods)if goods_num==0:breakreturn goods_numwhile 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)

4.3 运行

  • 运行效果

  • .csv文件

小小的总结

  • 运行看自己的电脑被操纵,莫名有点有趣。
  • 本次实验,完成动态网页的信息爬取,和静态网页一样需要查看网页结构。找到元素id或者利用相关函数得到元素,最后将信息获取,存储。以及对Selenium爬取网页的原理过程也有一定的了解。

参考文献

  1. 动态网页爬虫:https://blog.csdn.net/qq_45659777/article/details/121722475
  2. Python+Selenium动态网页的信息爬取:
    https://blog.csdn.net/weixin_56102526/article/details/121870172
  3. 动态网页的信息爬取:https://blog.csdn.net/qq_46359931/article/details/121918256

Python+Selenium动态网页的信息爬取相关推荐

  1. 动态网页的信息爬取(Python+Selenium)

    文章目录 一.Selenium 1.1 简介 1.2 配置环境 二.自动填充百度网页的查询关键字并完成自动搜索 三.爬取一个动态网页的数据 3.1 查看元素 3.2 代码 四.爬取京东网站上的感兴趣书 ...

  2. 基于Python的必联网招标信息爬取系统 课程报告+代码

    资源下载地址:https://download.csdn.net/download/sheziqiong/85672637 资源下载地址:https://download.csdn.net/downl ...

  3. selenium+chormdriver+python 实现淘宝的信息爬取

    因为我是个爬虫新手,所以对爬虫还不熟练,这几天想着自己做一个淘宝信息的自动爬取,一开始感觉比较简单,但做到了登录界面,发现一直被网站检测出来,不能滑动滑块.接下来从网上翻遍了资料,整理了以下自己的代码 ...

  4. Python动态网页爬虫之爬取知乎话题回答

    你是如何开始能写Python爬虫?就这个问题我查看了一下知乎,看到各种大牛写的心得,感觉受益匪浅,于是我有了一种冲动,想把各种大牛回答的心得爬取下来,以后可以细细品味. 首先我们在浏览器输入https ...

  5. python+selenium爬虫按照名单循环爬取作者知网下载量等信息

    主要爬取下面的表格内的信息如文献篇数,被引用数等等 用的是selenium爬虫 from selenium import webdriver from selenium.common.exceptio ...

  6. python ip动态代理_Python实现爬取可用代理IP

    Python实现爬取可用代理IP,在实现爬虫时,动态设置代理IP可以有效防止反爬虫,但对于普通爬虫初学者需要在代理网站上测试可用代理IP.由于手动测试过程相对比较繁琐,且重复无用过程故编写代码以实现动 ...

  7. 【Python】Scrapy完成电影信息爬取并存入数据库

    本文使用了scrapy框架对电影信息进行爬取并将这些数据存入MySQL数据库. 一.安装相关python模块 根据你所使用的python包管理器安装相应的模块.比如使用pip: pip install ...

  8. Python 爬虫“王者”:微博信息爬取

    这里的微博爬虫,我主要实现的是输入你关心的某个大 V 的微博名称,以及某条微博的相关内容片段,即可自动爬取相关该大 V 一段时间内发布的微博信息和对应微博的评论信息. Cookie 获取 与上面的 B ...

  9. 动态网页 —— 案例: 爬取qq邮箱

    其实在前一张博客动态网页--selenium+案例 中已经简单的爬过一遍qq邮箱了.本次呢是在上一次的代码上再完善一下啊. 其实我们很多习惯是养成了的,比如说我们很多人都是打开电脑后会立即登录自己的q ...

最新文章

  1. 为什么LINKBUTTON不能插在LTEMTEMPLATE里???
  2. Android Nand Flash 分区
  3. 【C++ Primer | 13】课后习题答案
  4. Oracle中一般游标与REF游标的区别
  5. 实现简单的ImageLoader
  6. 外贸网站建设(转自xmfish)
  7. ACCESS中执行sql语句
  8. 卡巴斯基称发现美国中情局CIA 开发的新恶意软件
  9. TensorFlow人工智能入门教程之十一 最强网络DLSTM 双向长短期记忆网络(阿里小AI实现)...
  10. 【模板】线性筛法求素数
  11. 【游戏开发实战】Unity UGUI序列帧动画(蓝胖子序列帧图)
  12. python画行向日葵_如何用Python画一朵太阳花
  13. QScrollArea 动态添加控件问题
  14. 报错:SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“.
  15. 盛铭轩电商:详情页优化
  16. var与varchar
  17. C++ 类的简单使用
  18. 在Power BI中用DAX计算净现值NPV
  19. 计算机桌面最小化后找不到,微博桌面最小化后找不到图标了怎么办??
  20. iOS 边学边记 HLS协议 m3u8 ts详解

热门文章

  1. 回流和重绘的介绍以及优化方法
  2. Calendar JAVA中用来计算时间差, 两个时间差, 多个时间差.
  3. photoshop cs6制备背景透明的png文件
  4. cucumber的hooks
  5. pychrm设置全局代理
  6. AutoCAD for Mac v2024 三维制图软件 兼容M1
  7. RuntimeError: populate() isn‘t reentrant
  8. SuperSocket框架实现服务器和Winform客户端
  9. java继承 -宠物类叫Pet(父类) ;属性有name 和 age; 行为有吃 eat(); 喝 drink(); 叫声shout();子类 Cat 和 Dog Cat继承 Pet类所
  10. 三年程序人生 深圳码农成长中进步