




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Python爬批量采集京东商品数据,实时了解商品价格势章录写在前这不快过年了,是要买年货,是要给朋友买礼物的,分析下价格,看看哪些是真的降价了准备作驱动安装实现案例之前,我们要先安装个歌驱动,因为我们是使selenium 操控歌驱动,然后操控浏览器实现动操作的,模拟的为去操作浏览器。以歌浏览器为例,打开浏览器看下我们的版本,然后下载跟浏览器版本样或者最相近的版本,下载后解压下,把解压好的插 件放到我们的python环境,或者和代码放到起也可以。模块使与介绍 selenium pip install selenium ,直接输selenium的话是默认安装最新的,selenium后加上版本号就是
2、安装对应的的版本; csv 内置模块,不需要安装,把数据保存到Excel表格的; time 内置模块,不需要安装,时间模块,主要于延时等待;流程解析我们访问个站,要输个址,所以代码也是这么写的。先导模块from selenium import webdriver件名或者包名不要命名为selenium,会导致法导。webdriver可以认为是浏览器的驱动器,要驱动浏览器必须到webdriver,持多种浏览器。实例化浏览器对象 ,我这的是歌,建议家歌,便点。driver = webdriver.Chrome()我们get访问个址,动打开址。driver.get('运下打开址后,以买红为例。
3、我们先要通过你想购买的商品关键字来搜索得到商品信息,搜索结果去获取信息。那我们也要写个输,空处点击右键,选择检查。选择element 元素板标点击左边的箭头按钮,去点击搜索框,它就会直接定位到搜索标签。在标签上点击右键,选择copy,选择copy selector 。如果你是xpath ,就copy它的xpath 。然后把我们想要搜索的内容写出来driver.find_element_by_css_selector('#key').send_keys('红')再运的时候,它就会动打开浏览器进标址搜索红。同样的法,找到搜索按钮进点击。driver.find_ele
4、ment_by_css_selector('.button').click()再运就会动点击搜索了页搜索出来了,那么咱们正常浏览页是要下拉页对吧,咱们让它动下拉就好了。 先导time模块import time执页滚动的操作def drop_down():"""执页滚动的操作""" # javascriptfor x in range(1, 12, 2): # for循环下拉次数,取1 3 5 7 9 11, 在你不断的下拉过程中, 页度也会变的;time.sleep(1)j = x / 9 # 1/9 3/9 5/9
5、9/9# document.documentElement.scrollTop 指定滚动条的位置# document.documentElement.scrollHeight 获取浏览器页的最度js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % jdriver.execute_script(js) # 执我们JS代码循环写好了,然后调下。drop_down()我们再给它来个延时driver.implicitly_wait(10)这是个隐式等待,等待页延时
6、,不好的话加载很慢。隐式等待不是必须等秒,在秒内你的络加载好后,它随时会加载,秒后没加载出来的话才会强加载。 还有另外种死等的,你写的秒就等秒,相对没有那么性化。time.sleep(10)加载完数据后我们需要去找商品数据来源价格/标题/评价/封/店铺等等还是标右键点击检查,在element ,点击箭头去点击你想查看的数据。可以看到都在li标签获取所有的 li 标签内容,还是样的,直接copy 。在左下就有了这表的是取的第个,但是我们是要获取所有的标签,所以左边框框 li 后的可以删掉不要。不要的话,可以看到这是60个商品数据,页是60个。所以我们把剩下的复制过来, lis接收下 。lis =
7、 driver.find_elements_by_css_selector('#J_goodsList ul li')因为我们是获取所有的标签数据,所以之前多了个s打印下print(lis)通过lis返回数据 列表 列表的元素 <> 对象遍历下,把所有的元素拿出来。for li in lis:title = li.find_element_by_css_selector('.p-name em').text.replace('n', '') # 商品标题 获取标签本数据price = li.find_element_b
8、y_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'
9、;) # 商品详情页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,'商品详情页': hr
10、ef,csv_writer.writerow(dit)print(title, price, commit, href, icon, sep=' | ')搜索功能key_world = input('请输你想要获取商品数据: ')要获取的数据 ,获取到后保存CSVf = open(f'京东key_world商品数据.csv', mode='a', encoding='utf-8', newline='')csv_writer = csv.DictWriter(f, fieldnames= '
11、商品标题','商品价格','评论量','店铺名字','标签','商品详情页',)csv_writer.writeheader()然后再写个动翻页for page in range(1, 11):print(f'正在爬取第page页的数据内容') time.sleep(1)drop_down() get_shop_info() # 下载数据driver.find_element_by_css_selector('.pn-next').click() # 点击下页完整代码from
12、 selenium import webdriver import timeimport csvdef drop_down():"""执页滚动的操作""" for x in range(1, 12, 2):time.sleep(1)j = x / 9 # 1/9 3/9 5/9 9/9# document.documentElement.scrollTop 指定滚动条的位置# document.documentElement.scrollHeight 获取浏览器页的最度js = 'document.documentElemen
13、t.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='商品标题
14、9;,'商品价格','评论量','店铺名字','标签','商品详情页',)csv_writer.writeheader()# 实例化个浏览器对象driver = webdriver.Chrome()driver.get(' # 访问个址 打开浏览器 打开址# 通过css语法在element(元素板)查找 #key 某个标签数据 输个关键词 红driver.find_element_by_css_selector('#key').send_keys(key_world) # 找到输框标签dri
15、ver.find_element_by_css_selector('.button').click() # 找到搜索按钮 进点击# time.sleep(10) # 等 待# driver.implicitly_wait(10) # 隐式等待def get_shop_info():# 第步 获取所有的li标签内容driver.implicitly_wait(10)lis = driver.find_elements_by_css_selector('#J_goodsList ul li') # 获取多个标签# 返回数据 列表 列表的元素 <> 对象#
16、 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 #
17、评论量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='
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省余姚市2022-2023学年高一下学期语文期末试卷(含答案)
- 2025共同借款合同中的连带责任担保条款示范文本
- 2025婚礼宴会承包合同模板
- 2025大货车租赁合同范本
- 2025培训班转让合同协议样本
- 2025关于服务采购合同范本
- 2025商业租赁合同范本模板
- 《流行性疾病概述》课件
- 《软件工程》课件设计模式的应用与实践
- 《前庭神经解剖》课件
- 浙江省2024年中考数学试卷(含答案)
- 新管理理论与管理方法
- (高清版)JTGT 5214-2022 在用公路桥梁现场检测技术规程
- DZ∕T 0215-2020 矿产地质勘查规范 煤(正式版)
- 妇科腹腔镜手术术前宣教
- 农贸市场消防应急预案演练总结
- 2023年湖北宜昌高新区社区专职工作人员(网格员)招聘考试真题及答案
- 《患者疼痛管理》课件
- 基于AI人工智能的智慧园区融合感知平台建设方案
- JB T 7689-2012悬挂式电磁除铁器
- 课件-错账更正
评论
0/150
提交评论