Selenium自动爬取京东商品评论
第一步:导入工具包
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import os,re
os.getcwd() #查看当前工作路径
path='设定你的工作路径'
os.chdir(path)
if not os.path.exists("results"): #先判断,避免重复建立results文件夹
os.makedirs("results") # 在当前路径下建立一个results文件夹,用于保存结果
第二歩:启动假人,登录查看商品
启动浏览器,登录京东商城。这里我们手动登录,感兴趣的朋友可以尝试自动登录。
browser = webdriver.Chrome()
url = 'https://www.jd.com/'
browser.get(url)
browser.maximize_window() # 最大化窗口
time.sleep(20) # 需要手动登录下,只有登录后才能查看到评论
# 如果不知道商品,可以查找
# browser.find_element(By.XPATH,'//*[@id="key"]').clear()
# browser.find_element(By.XPATH,'//*[@id="key"]').send_keys('iphone15')
url = 'https://item.jd.com/100068388451.html'
browser.get(url)
第三歩:找到商品评论
browser.find_element(By.XPATH,'//*[@id="detail"]/div[1]/ul/li[5]').click() # 点击“商品评价”按钮
time.sleep(2)
# 向下滑动
js_down = "window.scrollTo(0, document.body.scrollHeight)"
browser.execute_script(js_down)
# 移动到指定的坐标(相对当前的坐标移动)
browser.execute_script("window.scrollTo(0,800)")
第四步:爬取第一页源代码
data_all = ''
# 模拟滚动页面到底部加载更多评论
browser.execute_script("window.scrollTo(0, 9000)")
# 获取第一页评论数据
data = browser.page_source
data_all += data
第五步:爬取多页评论
# 点击下一页按钮获取更多评论数据
for i in range(8):
next_btn = browser.find_element(By.XPATH,'//*[@id="comment-0"]/div[12]/div/div/a[7]') #单击下一页按钮
next_btn.click()
time.sleep(2)
data = browser.page_source
data_all += data
第六步:提取评论内容
p_comment = '<p class="comment-con">(.*?)</p>'
comment = re.findall(p_comment, data_all)
f=open('results/jd_comments.txt','a',encoding='utf-8-sig')
for each in range(len(comment)):
f.write(str(each)+'\t'+comment[each]+'\n')
#关闭浏览器
browser.quit() # 退出浏览器