课程作业要求,遂学习了python的自动化selenium工具,并爬取京东商品评论数据练练手。
目录:
一、环境
二、第三方库
三、分析
1.1 chrome驱动
1.2 定位评论元素
1.3 循环爬取评论数据并保存为CVS文件导出
其中xpath对应网页元素
评论:
用户名:
四、代码
五、结果
一、环境
我使用的是windows+python3.6+pycharm,大家自己去下载对应的环境。
二、第三方库
from selenium import webdriver
from time import sleep
import csv
三、分析
1.1 chrome驱动
browser = webdriver.Chrome()#需要使用chrome的调用驱动chormedrive导入script目录
调用浏览器需要下载对应的chrome驱动到项目工程目录
我的目录是 C:\Users\Administrator\PycharmProjects\python\venv\Scripts
需要注意的是chrome浏览器的版本号需要与对应驱动版本号对应,不然会报错。
1.2 定位评论元素
然后就是通过xpath定位网页评论元素
try:
browser.get('https://item.jd.com/100002795959.html#none') #控制浏览器跳转到这个网页
button = browser.find_element_by_xpath("//li[@clstag='shangpin|keycount|product|shangpinpingjia_1']") #获取商品评论按钮
button.click() #控制按钮进行点击
sleep(10) #等待网页加载,防止网页加载过慢
1.3 循环爬取评论数据并保存为CVS文件导出
with open('comment_con.csv', 'w') as csvfile: #新建并打开comment_con.csv文件
writer = csv.writer(csvfile)
writer.writerow(['user_name', 'comment']) #写第一行
for n in range(99): #进行99次循环
m = n+1
print(m)
user = browser.find_elements_by_xpath("//div[@class='user-info']") #获取用户名
lis = browser.find_elements_by_xpath("//p[@class='comment-con']") #获取评论
for i in range(len(user)):
writer.writerow([user[i].text, lis[i].text])
button2 = browser.find_element_by_class_name("ui-pager-next") #获取下一页按钮
print(button2.text)
sleep(1)
print("第%d页" %m)
button2.click()
sleep(5)
finally:
browser.close()
其中xpath对应网页元素
评论:
用户名:
四、代码
from selenium import webdriver
from time import sleep
import csv
browser = webdriver.Chrome()#需要使用chrome的调用驱动chormedrive导入script目录
try:
browser.get('https://item.jd.com/100002795959.html#none') #控制浏览器跳转到这个网页
button = browser.find_element_by_xpath("//li[@clstag='shangpin|keycount|product|shangpinpingjia_1']") #获取商品评论按钮
button.click() #控制按钮进行点击
sleep(10) #等待网页加载,防止网页加载过慢
with open('comment_con.csv', 'w') as csvfile: #新建并打开comment_con.csv文件
writer = csv.writer(csvfile)
writer.writerow(['user_name', 'comment']) #写第一行
for n in range(99): #进行99次循环
m = n+1
print(m)
user = browser.find_elements_by_xpath("//div[@class='user-info']") #获取用户名
lis = browser.find_elements_by_xpath("//p[@class='comment-con']") #获取评论
for i in range(len(user)):
writer.writerow([user[i].text, lis[i].text])
button2 = browser.find_element_by_class_name("ui-pager-next") #获取下一页按钮
print(button2.text)
sleep(1)
print("第%d页" %m)
button2.click()
sleep(5)
finally:
browser.close()
五、结果
博客记录学习,传递知识,共同进步,希望对你有帮助。QAQ