Python Selenium爬虫实战应用

这篇具有很好参考价值的文章主要介绍了Python Selenium爬虫实战应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本节讲解 Python Selenium 爬虫实战案例,通过对实战案例的讲解让您进一步认识 Selenium 框架。

实战案例目标:抓取京东商城(https://www.jd.com/)商品名称、商品价格、评论数量,以及商铺名称。比如输入搜索“Python书籍”,则抓取如下数据:

{'name': 'Python编程 从入门到实践 第2版 人民邮电出版社', 'price': '¥52.50', 'count': '200+条评价', 'shop': '智囊图书专营店'}
{'name': 'Python编程 从入门到实践 第2版(图灵出品)', 'price': '¥62.10', 'count': '20万+条评价', 'shop': '人民邮电出版社'}
...

Selenium 框架的学习重点在于定位元素节点,关于如何定位,我们已经介绍了 8 种方法,其中 Xpath 表达式适用性强,并且便捷。因此,建议大家多多熟悉 Xpath 表达式的相关语法规则。本节案例中很大一部分采用了 Xpath 表达式定位元素,希望帮助您温故知新。

本节案例中涉及了几个技术难点:第一,如何下拉滚动条下载商品,第二,如何实现翻页,也就是抓取下一页的内容,第三,如何判断数据已经抓取完毕,即终止页。下面我们逐步讲解。

实现自动搜索

实现自动输出、自动搜索是最基础的一步。首先定位输入框的的节点,其次定位搜索按钮节点,这与实现百度自动搜索思路一致,最关键就是要正确定位元素节点。

通过开发者调试工具检查相应的的位置,可得如下 Xpath 表达式:

**

输入框表达式://*[@id="key"]
搜索按钮表达式://*[@class='form']/button

代码如下所示:

  1. from selenium import webdriver
  2. broswer=webdriver.Chrome()
  3. broswer.get(‘https://www.jd.com/’)
  4. broswer.find_element_by_xpath(‘//*[@id=“key”]’).send_keys(“python书籍”)
  5. broswer.find_element_by_xpath(“//*[@class=‘form’]/button”).click()

滚动滑动条

实现了自动搜索后,接下来就是要抓取页面中的商品信息,而您会发现只有将滑动条滚动至底部,商品才会全部加载完毕。滚动滑轮操作的代码如下:

  1. scrollTo(xpos,ypos)

  2. execute_script()执行js语句,拉动进度条件

  3. #scrollHeight属性,表示可滚动内容的高度
  4. self.browser.execute_script(
  5. ‘window.scrollTo(0,document.body.scrollHeight)’#拉动进度条至底部
  6. )

之后在通过 Xpath 表达式匹配所有商品,并将它们放入一个大列表中,通过循环列表取出每个商品,最后提取出想要的信息。

  1. li_list=self.browser.find_elements_by_xpath(‘//*[@id=“J_goodsList”]/ul/li’)
  2. for li in li_list:
  3. item={}
  4. 提取商品名

  5. item[‘name’]=li.find_element_by_xpath(‘.//div[@class=“p-name”]/a/em’).text.strip()
  6. 提取价格

  7. item[‘price’]=li.find_element_by_xpath(‘.//div[@class=“p-price”]’).text.strip()
  8. 提取评论数量

  9. item[‘count’]=li.find_element_by_xpath(‘.//div[@class=“p-commit”]/strong’).text.strip()
  10. 提取商家店铺

  11. item[‘shop’]=li.find_element_by_xpath(‘.//div[@class=“p-shopnum”]’).text.strip()

实现翻页抓取

如何实现翻页抓取数据,并判断数据数据已经抓取完毕呢?这其实并不难想到,我们可以先跳至终止页(即最后一页)。此时最后一页的“下一页”处于不可用状态,其元素节点如下:

**

终止页下一页class属性:<a class="pn-next disabled"><em>下一页</em><i> > </i></a>
其他页下一页class属性:<a class="pn-next" onclick="SEARCH.page(3, true)" ...><em>下一页</em><i> > </i></a>

如果页面源码中有上述代码存在,则证明此页是最后一页,若没有则不是。因此通过 if …else 语句即可实现上述需求,如下所示:

  1. #-1说明没找到,不是最后一页,执行点击 “下一页” 操作
  2. if self.browser.page_source.find(‘pn-next disabled’)==-1:
  3. browser.find_element_by_class_name(‘pn-next’).click()

完整程序代码

完整程序代码如下所示:

  1. #coding:utf8
  2. from selenium import webdriver
  3. import time
  4. import pymongo
  5. class JdSpider(object):
  6. def init(self):
  7. self.url=‘http://www.jd.com/’
  8. self.options=webdriver.ChromeOptions() # 无头模式
  9. self.options.add_argument(‘–headless’)
  10. self.browser=webdriver.Chrome(options=self.options) # 创建无界面参数的浏览器对象
  11. self.i=0 #计数,一共有多少件商品
  12. #输入地址+输入商品+点击按钮,切记这里元素节点是京东首页的输入栏、搜索按钮
  13. def get_html(self):
  14. self.browser.get(self.url)
  15. self.browser.find_element_by_xpath(‘//*[@id=“key”]’).send_keys(‘python书籍’)
  16. self.browser.find_element_by_xpath(“//*[@class=‘form’]/button”).click()
  17. #把进度条件拉倒最底部+提取商品信息
  18. def get_data(self):
  19. 执行js语句,拉动进度条件

  20. self.browser.execute_script(
  21. ‘window.scrollTo(0,document.body.scrollHeight)’
  22. )
  23. 给页面元素加载时预留时间

  24. time.sleep(2)
  25. #用 xpath 提取每页中所有商品,最终形成一个大列表
  26. li_list=self.browser.find_elements_by_xpath(‘//*[@id=“J_goodsList”]/ul/li’)
  27. for li in li_list:
  28. #构建空字典
  29. item={}
  30. item[‘name’]=li.find_element_by_xpath(‘.//div[@class=“p-name”]/a/em’).text.strip()
  31. item[‘price’]=li.find_element_by_xpath(‘.//div[@class=“p-price”]’).text.strip()
  32. item[‘count’]=li.find_element_by_xpath(‘.//div[@class=“p-commit”]/strong’).text.strip()
  33. item[‘shop’]=li.find_element_by_xpath(‘.//div[@class=“p-shopnum”]’).text.strip()
  34. print(item)
  35. self.i+=1
  36. def run(self):
  37. #搜索出想要抓取商品的页面
  38. self.get_html()
  39. #循环执行点击“下一页”操作
  40. while True:
  41. #获取每一页要抓取的数据
  42. self.get_data()
  43. #判断是否是最一页
  44. if self.browser.page_source.find(‘pn-next disabled’)==-1:
  45. self.browser.find_element_by_class_name(‘pn-next’).click()
  46. #预留元素加载时间
  47. time.sleep(1)
  48. else:
  49. print(‘数量’,self.i)
  50. break
  51. if name == ‘main’:
  52. spider=JdSpider()
  53. spider.run()

输出结果如下:

{'name': 'Python编程 从入门到实践 第2版(图灵出品) 人民邮电出版社', 'price': '¥52.50', 'count': '200+条评价', 'shop': '智囊图书专营店'}
{'name': 'Python编程 从入门到实践 第2版(图灵出品)', 'price': '¥62.10', 'count': '20万+条评价', 'shop': '人民邮电出版社'}
{'name': 'Python编程三剑客:Python编程从入门到实践第2版+快速上手第2版+极客编程(套装共3册)', 'price': '¥206.90', 'count': '5万+条评价', 'shop': '人民邮电出版社'}
{'name': 'Python数据分析从入门到实践(excel高效办公)(3全彩版)', 'price': '¥46.10', 'count': '10万+条评价', 'shop': '明日科技京东自营旗舰店'}
{'name': '零基础学Python(编程入门 项目实践 同步视频)(3全彩版)', 'price': '¥37.50', 'count': '10万+条评价', 'shop': '明日科技京东自营旗舰店'}
{'name': 'Python编程快速上手 让繁琐工作自动化 第2版', 'price': '¥44.50', 'count': '10万+条评价', 'shop': '人民邮电出版社'}
{'name': '现货包邮Python学习手册(原书第5版)上下册2本/计算机编程设计|8053406', 'price': '¥142.30', 'count': '100+条评价', 'shop': '互动创新图书专营店'}
{'name': '零基础入门学习Python(第2版)', 'price': '¥70.30', 'count': '1万+条评价', 'shop': '清华大学出版社'}
{'name': '超简单:用Python让Excel飞起来', 'price': '¥34.90', 'count': '2万+条评价', 'shop': '机械工业出版社自营官方旗舰店'}
{'name': '流畅的Python(图灵出品)', 'price': '¥109.80', 'count': '2万+条评价', 'shop': '人民邮电出版社'}
{'name': 'Python编程从入门到实践第二版 python编程从入门到实战零基础自学教程计算机基础语言数据分析', 'price': '¥49.80', 'count': '5000+条评价', 'shop': '墨马图书旗舰店'}
{'name': 'Python深度学习:基于PyTorch', 'price': '¥73.40', 'count': '5万+条评价', 'shop': '机械工业出版社自营官方旗舰店'}
{'name': 'Python自然语言处理实战:核心技术与算法 自然语言处理教程', 'price': '¥48.30', 'count': '37条评价', 'shop': '芝麻开门图书专营店'}
{'name': 'Effective Python:编写高质量Python代码的90个有效方法(原书第2版)', 'price': '¥110.60\n¥105.10', 'count': '2万+条评价', 'shop': '机械工业出版社自营官方旗舰店'}
...

Selenium 自动化爬虫让你无须关心网站的类型(静态或者动态),只需您按部就班的寻找元素节点,并依此点击,即可实现数据抓取。不过 Selenium 最大的缺点就是效率低,因此它只适合做小规模的数据采集工作。

这里给大家分享一份Python全套学习资料,包括学习路线、软件、源码、视频、面试题等等,都是我自己学习时整理的,希望可以对正在学习或者想要学习Python的朋友有帮助!

CSDN大礼包:全网最全《全套Python学习资料》免费分享🎁

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉CSDN大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

selenium爬取数据案例,python,爬虫,selenium,数据挖掘,开发语言文章来源地址https://www.toymoban.com/news/detail-808328.html

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
selenium爬取数据案例,python,爬虫,selenium,数据挖掘,开发语言

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~selenium爬取数据案例,python,爬虫,selenium,数据挖掘,开发语言

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
selenium爬取数据案例,python,爬虫,selenium,数据挖掘,开发语言
因篇幅有限,仅展示部分资料

2️⃣国内外Python书籍、文档

① 文档和书籍资料

selenium爬取数据案例,python,爬虫,selenium,数据挖掘,开发语言

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
selenium爬取数据案例,python,爬虫,selenium,数据挖掘,开发语言

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
selenium爬取数据案例,python,爬虫,selenium,数据挖掘,开发语言

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
selenium爬取数据案例,python,爬虫,selenium,数据挖掘,开发语言

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
selenium爬取数据案例,python,爬虫,selenium,数据挖掘,开发语言
selenium爬取数据案例,python,爬虫,selenium,数据挖掘,开发语言

5️⃣Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
selenium爬取数据案例,python,爬虫,selenium,数据挖掘,开发语言
selenium爬取数据案例,python,爬虫,selenium,数据挖掘,开发语言
上述所有资料 ⚡️ ,朋友们如果有需要 📦《全套Python学习资料》的,可以扫描下方二维码免费领取 🆓
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉CSDN大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

selenium爬取数据案例,python,爬虫,selenium,数据挖掘,开发语言

到了这里,关于Python Selenium爬虫实战应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python Selenium爬虫实战应用

    本节讲解 Python Selenium 爬虫实战案例,通过对实战案例的讲解让您进一步认识 Selenium 框架。 实战案例目标:抓取京东商城(https://www.jd.com/)商品名称、商品价格、评论数量,以及商铺名称。比如输入搜索“Python书籍”,则抓取如下数据: Selenium 框架的学习重点在于定位元素

    2024年01月20日
    浏览(51)
  • 【Python爬虫】基于selenium库爬取京东商品数据——以“七夕”为例

    小白学爬虫,费了一番功夫终于成功了哈哈!本文将结合本人踩雷经历,分享给各位学友~ 用写入方式打开名为data的csv文件,并确定将要提取的五项数据。 上面第一行代码值得一提,driver =  webdriver.Edge()括号内为Edge浏览器驱动程序地址,需要在Edge浏览器设置中查找Edge浏览器

    2024年02月06日
    浏览(56)
  • Python实战:用Selenium爬取网页数据

    网络爬虫是Python编程中一个非常有用的技巧,它可以让您自动获取网页上的数据。在本文中,我们将介绍如何使用Selenium库来爬取网页数据,特别是那些需要模拟用户交互的动态网页。 Selenium是一个自动化测试工具,它可以模拟用户在浏览器中的操作,比如点击按钮、填写表

    2024年02月06日
    浏览(45)
  • Python爬虫入门:使用selenium库,webdriver库模拟浏览器爬虫,模拟用户爬虫,爬取网站内文章数据,循环爬取网站全部数据。

    *严正声明:本文仅限于技术讨论与分享,严禁用于非法途径。 目录 准备工具: 思路: 具体操作: 调用需要的库: 启动浏览器驱动: 代码主体:  完整代码(解析注释): Python环境; 安装selenium库; Python编辑器; 待爬取的网站; 安装好的浏览器; 与浏览器版本相对应的

    2023年04月24日
    浏览(53)
  • 爬虫项目实战2.1 Selenium爬取Boss招聘信息

    完成: 1.爬取信息 2.基于爬取结果筛选符合条件的信息    岗位名称、薪资、岗位要求、地区、公司名称、公司规模、细节链接 3.筛选base杭州的岗位保存到csv文件中 But容易出现网络不稳定造成的无法定位元素所在位置的情况,小范围爬取可以 4.基于csv分析后续

    2024年02月05日
    浏览(45)
  • 【爬虫】7.2. JavaScript动态渲染界面爬取-Selenium实战

    爬取的网页为:https://spa2.scrape.center,里面的内容都是通过Ajax渲染出来的,在分析xhr时候发现url里面有token参数,所有我们使用selenium自动化工具来爬取JavaScript渲染的界面。

    2024年02月10日
    浏览(45)
  • Python网络爬虫逆向分析爬取动态网页、使用Selenium库爬取动态网页、​编辑将数据存储入MongoDB数据库

    目录 逆向分析爬取动态网页 了解静态网页和动态网页区别 1.判断静态网页  2.判断动态网页  逆向分析爬取动态网页 使用Selenium库爬取动态网页 安装Selenium库以及下载浏览器补丁 页面等待  页面操作 1.填充表单 2.执行JavaScript 元素选取 Selenium库的find_element的语法使用格式如下

    2024年02月15日
    浏览(107)
  • Python爬虫Selenium手动接管Edge爬取裁判文书网“环境污染”数据(Mac环境)

    目标数据:爬取从2007年到2022年,各地级市中级法院历年关于“环境污染”的裁判文书数量。 由于裁判文书网需要登录,Selenium手动接管爬取可避免频繁登录造成的封号风险。 Selenium如何手动接管Edge浏览器: 1、打开终端,将命令 /Applications/Microsoft Edge.app/Contents/MacOS/Microsof

    2023年04月09日
    浏览(34)
  • 爬虫项目实战:利用基于selenium框架的爬虫模板爬取豆瓣电影Top250

    👋 Hi, I’m @货又星 👀 I’m interested in … 🌱 I’m currently learning … 💞 I’m looking to collaborate on … 📫 How to reach me … README 目录(持续更新中) 各种错误处理、爬虫实战及模板、百度智能云人脸识别、计算机视觉深度学习CNN图像识别与分类、PaddlePaddle自然语言处理知识图谱、

    2024年02月04日
    浏览(44)
  • 【爬虫】5.5 Selenium 爬取Ajax网页数据

    目录   AJAX 简介 任务目标 创建Ajax网站 创建服务器程序 编写爬虫程序         AJAX(Asynchronous JavaScript And XML,异步 JavaScript 及 XML) Asynchronous 一种创建 交互式 、 快速动态 网页应用的网页开发技术 通过在后台与服务器进行少量数据交换,无需重新加载整个网页的情况下

    2024年02月10日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包