Selenium是一个用电脑模拟人操作浏览器网页,可以实现自动化,测试等!本文主要使用Selenium库与chrome浏览器进行数据获取。
pip install selenium
chromedriver
注意:chrome驱动要和chrome浏览器版本对应
1:在chrome浏览器地址栏中输入:chrome://version
2:下载对应版本的chromedriver
打开链接:
chromedriver
3:配置驱动
将解压后的chromedriver移动到/usr/local/bin目录下
这里是引用
爬虫代码:
from selenium import webdriver
import time
import csv
def drop_down():
"""执行页面滚动的操作""" # javascript
for x in range(1, 12, 2): # 1 3 5 7 9 11 在你不断的下拉过程中, 页面高度也会变的
time.sleep(1)
j = x / 9 # 1/9 3/9 5/9 9/9
js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
driver.execute_script(js) # 执行我们JS代码
key_world = input('请输入你想要获取商品数据: ')
f = open(f'京东{key_world}商品数据.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
'商品标题',
'商品价格',
'评论量',
'店铺名字',
'标签',
'商品详情页',
])
csv_writer.writeheader()
# selenium 模拟人的行为 获取数据内容
# selenium 操控 谷歌驱动 然后 操控浏览器
driver = webdriver.Chrome(executable_path="C:/Users/27112/AppData/Local/Google/Chrome/Application/chromedriver.exe")
#此次路径为chrome.exe路径
driver.get('https://www.jd.com/') # 访问一个网址 打开浏览器 打开网址
driver.find_element_by_css_selector('#key').send_keys(key_world) # 找到输入框标签
driver.find_element_by_css_selector('.button').click() # 找到搜索按钮 进行点击
time.sleep(1)
driver.find_element_by_css_selector('#J_filter > div.f-line.top > div.f-sort > a:nth-child(2)').click()
time.sleep(3)
def get_shop_info():
# 第一步 获取所有的li标签内容
driver.implicitly_wait(10)
lis = driver.find_elements_by_css_selector('#J_goodsList ul li') # 获取多个标签
# 返回数据 列表 [] 列表里面的元素 <> 对象
# print(len(lis))
for li in lis:
title = li.find_element_by_css_selector('.p-name em').text.replace('\n', '') # 商品标题 获取标签文本数据
price = li.find_element_by_css_selector('.p-price strong i').text # 价格
commit = li.find_element_by_css_selector('.p-commit strong a').text # 评论量
shop_name = li.find_element_by_css_selector('.J_im_icon a').text # 店铺名字
href = li.find_element_by_css_selector('.p-img a').get_attribute('href') # 商品详情页
icons = li.find_elements_by_css_selector('.p-icons i')
icon = ','.join([i.text for i in icons]) # 列表推导式 ','.join 以逗号把列表中的元素拼接成一个字符串数据
dit = {
'商品标题': title,
'商品价格': price,
'评论量': commit,
'店铺名字': shop_name,
'标签': icon,
'商品详情页': href,
}
csv_writer.writerow(dit)
print(title, price, commit, href, icon, sep=' | ')
for page in range(1, 2):
print(f'正在爬取第{page}页的数据内容')
time.sleep(1)
drop_down()
get_shop_info() # 下载数据
driver.find_element_by_css_selector('.pn-next').click() # 点击下一页
driver.quit() # 关闭浏览器
1:输入需要爬取的商品
2:自动爬取商品信息
3:自动保存.csv文件
4:自动保存商品展示图片
本篇文章讲解到这里啦,此篇文章只做为爬取过程与结果的展示。爬虫我也是上个学期才可以学,对这个比较有兴趣,所以我上个学期Python课程设计做的就是爬虫与数据分析,感兴趣的小伙伴可以给我留言,之后也会出爬虫的代码的详解和爬取数据的分析相关的文章,我肯定有讲的不好的地方,欢迎各位大佬来指正我 。
参考链接:https://ke.qq.com/teacher/3421355804