此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。
该代码利用了selenium的webriver模块,如果要运行以下代码,还得下载以下的浏览器插件。
谷歌浏览器点击:http://npm.taobao.org/mirrors/chromedriver/
火狐浏览器点击:https://github.com/mozilla/geckodriver/releases
点击对应的超链接,找到对应自己浏览器版本的插件,然后将下载好的插件放到 python的安装路径下。
话不多说,直接上代码。有不清楚或不懂的可以在下方留言。
from selenium import webdriver
import time
import csv
class JdSpider(object):
def __init__(self):
self.url = 'https://www.jd.com/' #设置url
# 创建浏览器对象
self.browser = webdriver.Chrome() #设置浏览器
# 打开某东,输入搜索内容,点击搜索
def get_page(self):
self.browser.get(self.url)
self.browser.find_element_by_xpath('//*[@id="key"]').send_keys('爬虫书籍') # 这里填写需要搜索的知识
self.browser.find_element_by_xpath('//*[@id="search"]/div/div[2]/button').click() #执行点击 查询 按钮
time.sleep(2) #睡眠两秒让页面加载
# 提取商品信息
def parse_page(self):
# 执行js脚本,把进度条拉到最底部
self.browser.execute_script(
'window.scrollTo(0,document.body.scrollHeight)')
# 加载网页的商品
time.sleep(3)
li_list = self.browser.find_elements_by_xpath('//*[@id="J_goodsList"]/ul/li')
# li_list : [li节点1,li节点2,商品信息li]
for li in li_list:
product_list = li.text.split('\n')
if product_list[0] == '单件':
# 价格
price = product_list[2]
# 名字
name = product_list[3]
# 评论
comment = product_list[4]
# 商家
market = product_list[5]
else:
# 价格
price = product_list[0]
# 名字
name = product_list[1]
# 评论
comment = product_list[2]
# 商家
market = product_list[3]
item=[price,market,name,comment]
print([price,market,comment,name])
with open('xxx.csv','a',encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(item)
def main(self):
self.get_page()
while True:
self.parse_page()
# 判断是否应该点击下一页
if self.browser.page_source.find('pn-next disabled') == -1:
self.browser.find_element_by_class_name('pn-next').click()
time.sleep(2)
else:
break
if __name__ == '__main__':
spider = JdSpider()
spider.main()
内容引用于课堂,我做了一些注释整理,加了一个保存文件的步骤。