Python批量采集商品数据并使用多线程(含完整源码)
前言
嗨喽,大家好,这里是魔王~
本次目的:
Python批量采集商品数据
知识点:
- 爬虫基本流程
- 非结构化数据解析
- csv数据保存
- 线程池的使用
开发环境:
- python 3.8
- pycharm
- requests >>> pip install requests
- parsel >>> pip install parsel
网站思路分析:
找到数据来源 https://www.amazon.cn/s?rh=n%3A106200071&fs=true&ref=lp_106200071_sar
代码实现:
- 发送网络请求 requests 第三方模块 发送请求
- 获取数据
- 解析数据 parsel ? 帮助解析数据 模块 第三方模块
- 保存数据
- 多页爬取
- 代码封装成函数 使用线程池爬取
导入模块
import requests # 第三方模块
import parsel # 解析数据模块
import csv
加伪装
headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','Accept-Encoding': 'gzip, deflate, br','Accept-Language': 'zh-CN,zh;q=0.9','Cache-Control': 'max-age=0','Connection': 'keep-alive','Cookie': 'session-id=460-4132650-8765807; i18n-prefs=CNY; ubid-acbcn=457-7935785-7667244; session-token=Laa3G6hMbBpdAIPYwutQqKxkSISU8fb2jTr0JiczqkeVISvqn2eqjw4N0BAbYfmy8+/S1B3kLvDb9ImsBnbwQHU6JG8EToefDoi69keaL1F6ExYDXCSqFF0hC4fkGAFJlNYYNqfVlvj5ewTVJP1pYgL4JG2tjM5O2Uk7ufiL9s7gvidAMaUj1QtBW5puqmoG; csm-hit=adb:adblk_no&t:1645531896484&tb:s-VMQ97YXPSC1MBACTN14J|1645531895768; session-id-time=2082729601l','downlink': '10','ect': '4g','Host': 'www.amazon.cn','Referer': 'https://www.amazon.cn/b/ref=s9_acss_bw_cg_pccateg_2a1_w?node=106200071&pf_rd_m=A1U5RCOVU0NYF2&pf_rd_s=merchandised-search-2&pf_rd_r=KE929JDVF8QRWWDQCWC0&pf_rd_t=101&pf_rd_p=cdcd9a0d-d7cf-4dab-80db-2b7d63266973&pf_rd_i=42689071','rtt': '150','sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="98", "Google Chrome";v="98"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"Windows"','Sec-Fetch-Dest': 'document','Sec-Fetch-Mode': 'navigate','Sec-Fetch-Site': 'same-origin','Sec-Fetch-User': '?1','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36',
}
for page in range(1, 401):url = f'https://www.amazon.cn/s?i=computers&rh=n%3A106200071&fs=true&page={page}&qid=1645537294&ref=sr_pg_3'
1. 发送网络请求
response = requests.get(url=url, headers=headers)
2. 获取数据 <Response [200]>: 请求成功
data_html = response.text# print(data_html)
3. 解析数据 html + css 网站开发内容
selector = parsel.Selector(data_html)divs = selector.css('.a-section.a-spacing-base')for div in divs:# ::text: 提取到标签文本内容title = div.css('.a-size-base-plus.a-color-base.a-text-normal::text').get()price = div.css('.a-size-base.a-link-normal.s-underline-text.s-underline-link-text.s-link-style.a-text-normal .a-price .a-offscreen::text').get()img_url = div.css('.a-section.aok-relative.s-image-square-aspect .s-image::attr(src)').get()link = div.css('.a-link-normal.s-no-outline::attr(href)').get()print(title, price, img_url, link)
4. 保存数据
with open('亚马逊.csv', mode='a', encoding='utf-8', newline='') as f:csv_writer = csv.writer(f)csv_writer.writerow([title, price, img_url, link])
多线程
导入模块
import requests # 第三方模块
import parsel # 解析数据模块
import csv
import concurrent.futures
熟悉得加伪装
headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','Accept-Encoding': 'gzip, deflate, br','Accept-Language': 'zh-CN,zh;q=0.9','Cache-Control': 'max-age=0','Connection': 'keep-alive','Cookie': 'session-id=460-4132650-8765807; i18n-prefs=CNY; ubid-acbcn=457-7935785-7667244; session-token=Laa3G6hMbBpdAIPYwutQqKxkSISU8fb2jTr0JiczqkeVISvqn2eqjw4N0BAbYfmy8+/S1B3kLvDb9ImsBnbwQHU6JG8EToefDoi69keaL1F6ExYDXCSqFF0hC4fkGAFJlNYYNqfVlvj5ewTVJP1pYgL4JG2tjM5O2Uk7ufiL9s7gvidAMaUj1QtBW5puqmoG; csm-hit=adb:adblk_no&t:1645531896484&tb:s-VMQ97YXPSC1MBACTN14J|1645531895768; session-id-time=2082729601l','downlink': '10','ect': '4g','Host': 'www.amazon.cn','Referer': 'https://www.amazon.cn/b/ref=s9_acss_bw_cg_pccateg_2a1_w?node=106200071&pf_rd_m=A1U5RCOVU0NYF2&pf_rd_s=merchandised-search-2&pf_rd_r=KE929JDVF8QRWWDQCWC0&pf_rd_t=101&pf_rd_p=cdcd9a0d-d7cf-4dab-80db-2b7d63266973&pf_rd_i=42689071','rtt': '150','sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="98", "Google Chrome";v="98"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"Windows"','Sec-Fetch-Dest': 'document','Sec-Fetch-Mode': 'navigate','Sec-Fetch-Site': 'same-origin','Sec-Fetch-User': '?1','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36',
}
def get_html(url):
1. 发送网络请求
response = requests.get(url=url, headers=headers)
2. 获取数据 <Response [200]>: 请求成功
data_html = response.textreturn data_htmldef parse_data(data_html):
3. 解析数据 html + css 网站开发内容
selector = parsel.Selector(data_html)divs = selector.css('.a-section.a-spacing-base')info_list = []for div in divs:# ::text: 提取到标签文本内容title = div.css('.a-size-base-plus.a-color-base.a-text-normal::text').get()price = div.css('.a-size-base.a-link-normal.s-underline-text.s-underline-link-text.s-link-style.a-text-normal .a-price .a-offscreen::text').get()img_url = div.css('.a-section.aok-relative.s-image-square-aspect .s-image::attr(src)').get()link = div.css('.a-link-normal.s-no-outline::attr(href)').get()info_list.append([title, price, img_url, link])return info_listdef save_data(info_list):
4. 保存数据
print(info_list)with open('亚马逊.csv', mode='a', encoding='utf-8', newline='') as f:csv_writer = csv.writer(f)csv_writer.writerows(info_list)def run(url):
1. 发送请求 并且获取数据
data_html = get_html(url)
2. 解析数据
info_list = parse_data(data_html)
3. 保存数据
save_data(info_list)with concurrent.futures.ThreadPoolExecutor(max_workers=4) as exe:for page in range(1, 401):url = f'https://www.amazon.cn/s?i=computers&rh=n%3A106200071&fs=true&page={page}&qid=1645537294&ref=sr_pg_3'exe.submit(run, url)# for page in range(1, 401):
# url = f'https://www.amazon.cn/s?i=computers&rh=n%3A106200071&fs=true&page={page}&qid=1645537294&ref=sr_pg_3'
# run(url)
相对应的安装包/安装教程/激活码/使用教程/学习资料/工具插件 可以点击领取
尾语
好了,我的这篇文章写到这里就结束啦!
有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง
喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!
Python批量采集商品数据并使用多线程(含完整源码)相关推荐
- Python编程:打造太空入侵者游戏(含完整源码)
Python编程:打造太空入侵者游戏(含完整源码) 太空入侵者这款游戏经典得让人不能忘怀,而Python语言的简单易学.快速开发的特性,使其成为实现该游戏的最好选择.在本篇文章中,我们将为读者呈现如何 ...
- 【python数据分析】对淘商品类母婴购物数据进行分析(含完整源码)
前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 一.数据集 今天我们来看一个来着阿里云天池的数据集:淘母婴购物数据,有两个csv文件: 1.mum_baby.csv 它包 ...
- JavaGUI:多功能计算器(五)--Swing实现双语数据包+菜单切换(完整源码+EXE下载)
JavaGUI:多功能计算器(五)–Swing实现双语数据包+菜单切换(完整源码+EXE下载) 本文资源下载: 程序源码及可独立运行的EXE文件自解压包(32bit): 多功能计算器v0.41[双语界 ...
- Python实现修改图片分辨率(含完整源码)
Python实现修改图片分辨率(含完整源码) 在我们日常的工作和学习中,经常需要处理图片.有时候,我们可能需要修改图片的分辨率,以适应不同的需求.本文将介绍如何使用Python来实现修改图片的分辨率, ...
- Python基于Django的电影推荐系统和论坛项目完整源码
前些天发现了十分不错的人工智能学习网站,通俗易懂,风趣幽默,没有广告,分享给大家,大家可以自行看看.(点击跳转人工智能学习资料) 微信公众号:创享日记 发送:电影论坛 获取完整论文报告+项目源码源文件 ...
- Python实现行业轮动量化选股【附完整源码】
编者荐语: 所谓山不转水转,行业中的动量也存在一定的轮换效应.今天给大家分享一篇来自<量化小白上分记>的研报复现文章,基于因子动量.波动率.偏度.峰度来刻画行业轮动,对于构建行业轮动量化选 ...
- 美女如何无水印下载?python带你批量采集(含完整源码)
环境介绍: python 3.8 解释器 pycharm 2021专业版 >>> 激活码 编辑器 谷歌浏览器 谷歌驱动 selenium >>> 驱动 >&g ...
- Python爬取天气数据及可视化分析(附源码)
大家好,我是辰哥(文末送书) 天气预报我们每天都会关注,我们可以根据未来的天气增减衣物.安排出行,每天的气温.风速风向.相对湿度.空气质量等成为关注的焦点.本次使用python中requests和Be ...
- 使用python 采集某网站全站美女图片 ,这么好看得图还不学起来(含完整源码)
本次目的: python 抓取某某站图片 本次亮点: 系统性分析页面 多页面数据解析 海量图片数据保存 开发环境 & 第三方模块: 解释器版本 >>> python 3.8 ...
最新文章
- WPF框架的内存泄漏BUG
- NLP模型BERT和经典数据集!
- ASP.NET 网页- WebGrid 帮助器简介
- BigDecimal使用时的参数详解
- C++中Delete时堆错误(Heap Corruption)的原因
- 数据库事务的四大特性以及事务的隔离级别详解
- HDU Problem - 1969 Pie(二分,精度)
- 苹果CMS音乐猪自适应网站模板
- postman如何测试php接口_基于Postman的API自动化测试
- 软件工程复习提纲——第一章
- 北京这些5平米不到的外卖窗口,居然能够排起100米以上的长龙!
- linux pppoe 共享上网,Linux操作系统下如何PPPOE拨号共享上网?
- Flutter获取packageName和versionCode
- 从进化的角度看为啥要均贫富
- 妈妈帮上云之路:云上平台架构与运维实践
- python编写英文字典_python如何制作英文字典
- 双子星量子计算机,【前沿】“前途”无量的量子科技
- 复利的谎言,很多人都中圈套了!!
- TCP/IP 模型与 OSI 模型对比
- Geogebra键盘输入快捷键
热门文章
- AI (Adobe Illustrator)详细用法(四)
- 《安富莱嵌入式周报》第254期:2022.02.21--2022.02.27
- PDF--软件操作大全
- 【智能家居】苹果HomeKit、米家、aqara怎么选?用智汀掌控一切
- 逆傅里叶变IFFT原始信号恢复方法研究-附Matlab代码
- L1-049 天梯赛座位分配 (20分)(C语言)
- 微信小程序转uniapp
- 公司设备换新,哪家智能会议平板好?
- 微型电子计算机网络,一种计算机网络安全的微型盒装置的制作方法
- [C语言]使用指针将输入的多个字符串按大小升序排序