Selenium结合BeautifulSoup4编写简单的python爬虫


Posted in Python onNovember 06, 2020

在学会了抓包,接口请求(如requests库)和Selenium的一些操作方法后,基本上就可以编写爬虫,爬取绝大多数网站的内容。

在爬虫领域,Selenium永远是最后一道防线。从本质上来说,访问网页实际上就是一个接口请求。请求url后,返回的是网页的源代码。

我们只需要解析html或者通过正则匹配提取出我们需要的数据即可。

有些网站我们可以使用requests.get(url),得到的响应文本中获取到所有的数据。而有些网页数据是通过JS动态加载到页面中的。使用requests获取不到或者只能获取到一部分数据。
此时我们就可以使用selenium打开页面来,使用driver.page_source来获取JS执行完后的完整源代码。

例如,我们要爬取,diro官网女包的名称,价格,url,图片等数据,可以使用requests先获取到网页源代码:
访问网页,打开开发者工具,我们可以看到所有的商品都在一个

  • 标签里,展开这个li标签,我们可找到商品名称,价格,url,图片链接等信息

Selenium结合BeautifulSoup4编写简单的python爬虫

从html格式的源码中提取数据,有多种选择,可以使用xml.etree等等方式,bs4是一个比较方便易用的html解析库,配合lxml解析速度比较快。

bs4的使用方法为

from bs4 import BeautifulSoup

soup = BeautifulSoup(网页源代码字符串,'lxml')

soup.find(...).find(...)
soup.findall()
soup.select('css selector语法')

soup.find()可以通过节点属性进行查找,如,soup.find('div', id='节点id')或soup.find('li', class_='某个类名')或soup.find('标签名', 属性=属性值),当找到一个节点后,还可以使用这个节点继续在其子节点中查找。
soup.find_all()是查找多个,同样属性的节点,返回一个列表。
soup.select()是使用css selector语法查找,返回一个列表。

以下为示例代码:

from selenium import webdriver
from bs4 import BeautifulSoup

driver = webdriver.Chrome()
driver.get('https://www.dior.cn/zh_cn/女士精品/皮具系列/所有手提包')
soup = BeautifulSoup(driver.page_source, 'lxml')

products = soup.select('li.is-product')
for product in products:
 name = product.find('span', class_='product-title').text.strip()
 price = product.find('span', class_='price-line').text.replace('¥', '').replace(',','')
 url = 'https://www.dior.cn' + product.find('a', class_='product-link').attrs['href']
 img = product.find('img').attrs['src']
 sku = img.split('/')[-1]
 print(name, sku, price)

driver.quit()

运行结果,如下图:

Selenium结合BeautifulSoup4编写简单的python爬虫

注:本例中,也可以使用requests.get()获取网页源代码,格式和使用selenium加载的稍有不同。

一般简单爬虫编写的步骤为:

  • 进入列表页,打开开发者工具,刷新页面及向下滚动,查看新产品加载,是否能抓到XHR数据接口(直接返回JSON格式所有产品数据的接口)
  • 如果有这种接口,尝试修改参数中的分页值,和请求总数值,看看是否能从一个接口返回所有的商品数据
  • 如果只有Doc类型的接口返回页面,尝试使用requests.get()请求页面,分析响应文本,是否包含所有商品数据
  • 如果requests获取不到商品数据或数据不全可以使用selenium加载页面,然后使用bs4解析提取,如果有多个页面,循环逐个操作即可。

以上就是Selenium结合BeautifulSoup4编写简单的python爬虫的详细内容,更多关于python 爬虫的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python selenium如何设置等待时间
Sep 15 Python
python机器学习之神经网络(一)
Dec 20 Python
不管你的Python报什么错,用这个模块就能正常运行
Sep 14 Python
Python脚本完成post接口测试的实例
Dec 17 Python
python 同时读取多个文件的例子
Jul 16 Python
关于Python核心框架tornado的异步协程的2种方法详解
Aug 28 Python
python智联招聘爬虫并导入到excel代码实例
Sep 09 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
Jun 23 Python
Python创建简单的神经网络实例讲解
Jan 04 Python
Python实战之疫苗研发情况可视化
May 18 Python
Python图像处理库PIL详细使用说明
Apr 06 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
Jul 23 Python
python两种获取剪贴板内容的方法
Nov 06 #Python
用python写一个带有gui界面的密码生成器
Nov 06 #Python
python如何编写类似nmap的扫描工具
Nov 06 #Python
Python常用base64 md5 aes des crc32加密解密方法汇总
Nov 06 #Python
基于Python模拟浏览器发送http请求
Nov 06 #Python
python如何写个俄罗斯方块
Nov 06 #Python
基于Python实现全自动下载抖音视频
Nov 06 #Python
You might like
截获网站title标签之家内容的例子
2006/10/09 PHP
php实现网站插件机制的方法
2009/11/10 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
2014/06/23 PHP
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
2017/08/15 PHP
PHP守护进程化在C和PHP环境下的实现
2017/11/21 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
jQuery中empty()方法用法实例
2015/01/16 Javascript
AngularJS constant和value区别详解
2017/02/28 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
vue element 生成无线级左侧菜单的实现代码
2019/08/21 Javascript
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
[51:14]LGD vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
浅谈Python的文件类型
2016/05/30 Python
Python中字符串的处理技巧分享
2016/09/17 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
python+pyqt5实现24点小游戏
2019/01/24 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
2019/06/21 Python
如何基于Python批量下载音乐
2019/11/11 Python
基于python实现操作git过程代码解析
2020/07/27 Python
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
电气工程师岗位职责
2014/01/01 职场文书
学生党员思想汇报范文
2014/01/09 职场文书
美发活动策划书
2014/01/14 职场文书
会议开场欢迎词
2014/01/15 职场文书
个人求职信范文分享
2014/01/31 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
社区义诊活动总结
2014/04/30 职场文书
环保建议书100字
2014/05/14 职场文书
数学考试作弊检讨书300字
2015/02/16 职场文书