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获取单个程序CPU使用情况趋势图
Mar 10 Python
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
Mar 19 Python
Python读大数据txt
Mar 28 Python
python脚本爬取字体文件的实现方法
Apr 29 Python
pandas实现将dataframe满足某一条件的值选出
Jun 12 Python
Python对接支付宝支付自实现功能
Oct 10 Python
python函数局部变量、全局变量、递归知识点总结
Nov 15 Python
Python实现遗传算法(二进制编码)求函数最优值方式
Feb 11 Python
PyQt5+python3+pycharm开发环境配置教程
Mar 24 Python
Python中qutip用法示例详解
Oct 02 Python
Pytorch之扩充tensor的操作
Mar 04 Python
Python语言中的数据类型-序列
Feb 24 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
PHP中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
Zend Studio (eclipse)使用速度优化方法
2011/03/23 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
ThinkPHP的I方法使用详解
2014/06/18 PHP
php上传大文件失败的原因及应对策略
2015/10/20 PHP
thinkPHP查询方式小结
2016/01/09 PHP
Yii2验证器(Validator)用法分析
2016/07/23 PHP
PHP实现的简单组词算法示例
2018/04/10 PHP
JS实现self的resend
2010/07/22 Javascript
javascript简单实现滑动菜单效果的方法
2015/07/27 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
JS图片预加载插件详解
2017/06/21 Javascript
vue-cli + sass 的正确打开方式图文详解
2017/10/27 Javascript
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
2020/08/31 Javascript
[06:44]2018DOTA2亚洲邀请赛4.5 SOLO赛 MidOne vs Sumail
2018/04/06 DOTA
python求pi的方法
2014/10/08 Python
python删除过期文件的方法
2015/05/29 Python
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
对python GUI实现完美进度条的示例详解
2018/12/13 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
Python 异常处理Ⅳ过程图解
2019/10/18 Python
关于python中remove的一些坑小结
2021/01/04 Python
pandas数据分组groupby()和统计函数agg()的使用
2021/03/04 Python
Happy Socks英国官网:购买五颜六色的袜子
2020/11/03 全球购物
文员个人的求职信范文
2013/09/26 职场文书
广告学专业应届生求职信
2013/10/01 职场文书
求职信的最佳写作思路
2014/02/01 职场文书
简单的项目建议书模板
2014/03/12 职场文书
母校寄语大全
2014/04/10 职场文书
幼儿园大班开学寄语
2014/08/02 职场文书
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
2014年市场部工作总结
2014/11/25 职场文书
2016年公司新年寄语
2015/08/17 职场文书