python抓取动态网页( 本节讲解PythonSelenium爬虫爬虫实战案例(一)(图))

优采云 发布时间: 2022-03-16 03:19

  python抓取动态网页(

本节讲解PythonSelenium爬虫爬虫实战案例(一)(图))

  Python Selenium爬虫的实际应用

  本节讲解Python Selenium爬虫的实际案例。通过实际案例的讲解,可以进一步了解 Selenium 框架。

  实战案例的目标:抓取京东商城()的商品名称、商品价格、评论数、店铺名称。例如,如果您输入搜索“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

  代码如下所示:

  from selenium import webdriver

broswer=webdriver.Chrome()

broswer.get('https://www.jd.com/')

broswer.find_element_by_xpath('//*[@id="key"]').send_keys("python书籍")

broswer.find_element_by_xpath("//*[@class='form']/button").click()

  滚动条

  实现自动搜索后,接下来就是爬取页面中的商品信息,你会发现只有当滑块滚动到底部时,商品才会满载。滚轮操作的代码如下:

  # scrollTo(xpos,ypos)

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

#scrollHeight属性,表示可滚动内容的高度

self.browser.execute_script(

'window.scrollTo(0,document.body.scrollHeight)'#拉动进度条至底部

)

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

  li_list=self.browser.find_elements_by_xpath('//*[@id="J_goodsList"]/ul/li')

for li in li_list:

item={}

# 提取商品名

item['name']=li.find_element_by_xpath('.//div[@class="p-name"]/a/em').text.strip()

# 提取价格

item['price']=li.find_element_by_xpath('.//div[@class="p-price"]').text.strip()

# 提取评论数量

item['count']=li.find_element_by_xpath('.//div[@class="p-commit"]/strong').text.strip()

# 提取商家店铺

item['shop']=li.find_element_by_xpath('.//div[@class="p-shopnum"]').text.strip()

  实现翻页

  如何实现翻页取数据,判断数据已经取到?这其实不难想到,我们可以跳转到最后一页(即最后一页)。此时最后一页的“下一页”不可用,其元素节点如下:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线