selenium爬取京东商品信息_Python爬虫系列(十三) 用selenium爬取京东商品

本文介绍如何利用selenium模拟浏览器行为,爬取京东笔记本商品的ID、价格、名称和评论人数。首先分析网页结构,发现网页动态加载,通过下拉触发加载更多商品。接着模拟翻页,找到翻页元素并点击。最后解析页面,提取所需数据,并给出代码实现中需要注意的几点,如处理浏览器加载延迟和选择元素的方法。
摘要由CSDN通过智能技术生成

这篇文章,我们将通过 selenium 模拟用户使用浏览器的行为,爬取京东商品信息,还是先放上最终的效果图:

0ee4b5f73740019d33a2332a8aa925e4.png

1、网页分析

(1)初步分析

原本博主打算写一个能够爬取所有商品信息的爬虫,可是在分析过程中发现,不同商品的网页结构竟然是不一样的

所以,后来就放弃了这个想法,转为只爬取笔记本类型商品的信息

如果需要爬取其它类型的商品信息,只需把提取数据的规则改变一下就好,有兴趣的朋友可以自己试试看呀

好了,下面我们正式开始!

首先,用 Chrome 浏览器打开 笔记本商品首页,我们很容易发现该网页是一个 动态加载 的网页

因为刚打开网页时只会显示 30 个商品的信息,可是当我们向下拖动网页时,它会再次加载剩下 30 个商品的信息

这时候我们可以通过 selenium 模拟浏览器下拉网页的过程,获取网站全部商品的信息

>>> browser.execute_script("window.scrollTo(0,document.body.scrollHeight)")

5e302887c69f03ce99616f9dbd0e1305.png

(2)模拟翻页

另外,我们发现该网站一共有 100 个网页

我们可以通过构造 URL 来获取每一个网页的内容,但是这里我们还是选择使用 selenium 模拟浏览器的翻页行为

下拉网页至底部可以发现有一个 下一页 的按钮,我们只需获取并点击该元素即可实现翻页

>>> browser.find_element_by_xpath('//a[@class="pn-next" and @onclick]').click()

2ef09370439aaae5bddcaeeb0fd005cc.png

(3)获取数据

接下来,我们需要解析每一个网页来获取

Selenium是一个流行的Web自动化测试工具,它允许用户模拟浏览器行为,包括登录、浏览网页和抓取数据。要使用Selenium爬取京东商品的评论,你需要按照以下步骤操作: 1. **安装依赖**: - 安装Python:确保你已经安装了Python,如果没有可以去官网下载。 - 安装Selenium:运行`pip install selenium` 来安装Selenium库。 - 驱动程序:选择对应的浏览器驱动(如ChromeDriver、FirefoxDriver等),根据你的浏览器版本下载并放到系统路径下。 2. **初始化**: 使用`webdriver_manager`库自动管理驱动,或者手动指定驱动路径: ```python from webdriver_manager.chrome import ChromeDriverManager driver = webdriver.Chrome(ChromeDriverManager().install()) ``` 3. **打开页面**: ```python driver.get('https://www.jingdong.com/comment/default.htm?skuId=商品ID') ``` 将`商品ID`替换为实际的商品ID。 4. **等待加载**: 由于评论可能是动态加载的,使用`WebDriverWait`等待元素加载: ```python from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, 10) # 等待时间可根据实际情况调整 wait.until(EC.presence_of_element_located((By.XPATH, '//div[@class="comment-list"]'))) ``` 5. **抓取评论**: 根据HTML结构定位评论元素,提取内容,例如: ```python comment_list = driver.find_elements(By.XPATH, '//div[@class="comment-item "]') for comment in comment_list: text = comment.find_element(By.XPATH, './/p[@class="review-content"]').text rating = comment.find_element(By.XPATH, './/i[@class="score"]').get_attribute('title') print(f"评论文本:{text}, 评分:{rating}") ``` 6. **保存数据**: 可能需要结合其他库(如Pandas)将评论数据保存到CSV或其他文件格式。 7. **退出浏览器**: 访问完后关闭浏览器窗口: ```python driver.quit() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值