使用Selenium模拟浏览器访问京东首页(网址https://item.jd.com/),爬取京东网站商品的评价。例如,搜索“口罩”, 100页相关商品信息,获取每个商品的全部评价,并保存到本地TXT文件中,每个商品的评价信息保存为一个文件。
时间: 2024-03-29 10:38:59 浏览: 109
selenium登录爬取京东商品信息(python爬虫例子)
好的,这是一个比较复杂的任务,需要用到Selenium和正则表达式等技术。我会尽力解释清楚每一个步骤,让你能够完成这个任务。
首先,我们需要先安装Selenium模块。在终端中输入以下命令:
```
pip install selenium
```
接下来,我们需要下载浏览器驱动程序。这里以Chrome浏览器为例,你可以根据自己使用的浏览器进行相应的操作。
下载地址:http://chromedriver.chromium.org/downloads
下载完成后,将驱动程序放在一个合适的位置,并将其路径添加到系统环境变量中。
接下来,我们进入正式的代码编写环节。
```python
from selenium import webdriver
import time
import re
# 设置Chrome浏览器驱动程序的路径
driver_path = '/usr/local/bin/chromedriver'
# 创建浏览器对象
browser = webdriver.Chrome(executable_path=driver_path)
# 打开京东首页
browser.get('https://www.jd.com/')
# 搜索关键词
search_input = browser.find_element_by_id('key')
search_input.send_keys('口罩')
search_button = browser.find_element_by_css_selector('.button')
search_button.click()
# 获取总页数
page_info = browser.find_element_by_css_selector('.p-skip em b')
total_page = int(page_info.text)
# 遍历每一页
for i in range(total_page):
print('正在爬取第{}页'.format(i+1))
# 获取每一页中的商品列表
goods_list = browser.find_elements_by_css_selector('.gl-item')
# 遍历每一个商品
for goods in goods_list:
try:
# 获取商品链接
goods_url = goods.find_element_by_css_selector('.p-name a').get_attribute('href')
# 获取商品评价
browser.get(goods_url)
time.sleep(2)
comments_button = browser.find_element_by_css_selector('.comment-count')
comments_button.click()
time.sleep(2)
# 获取所有的评价
comments = browser.find_elements_by_css_selector('.comment-item .comment-con .comment-con-txt')
# 将评价保存到本地
with open('comments/{}.txt'.format(re.sub('[/\\\\:*?"<>|]', '', goods.find_element_by_css_selector('.p-name em').text)), 'w', encoding='utf-8') as f:
for comment in comments:
f.write(comment.text + '\n')
except Exception as e:
print(e)
# 点击下一页
next_page = browser.find_element_by_css_selector('.pn-next')
next_page.click()
```
代码中的注释已经解释了每一个步骤的含义,这里简单介绍一下。
首先,我们打开京东首页,搜索关键词,获取总页数。然后,遍历每一页中的商品列表,通过获取商品链接进入每个商品的页面,获取商品评价并保存到本地。
需要注意的是,由于每个评价信息都是动态加载的,我们需要先点击“查看全部评价”按钮,等待一段时间,再获取评价信息。同时,由于评价信息中可能包含一些特殊字符,我们需要将文件名中的这些字符替换掉,避免文件名错误。
保存完所有的评价信息后,程序运行结束。
希望这个代码能帮到你,如果有任何问题,欢迎随时提出。
阅读全文