前言

嗨喽,大家好,这里是魔王~

本次目的:

Python批量采集商品数据

知识点:

  1. 爬虫基本流程
  2. 非结构化数据解析
  3. csv数据保存
  4. 线程池的使用

开发环境:

  • 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

代码实现:

  1. 发送网络请求 requests 第三方模块 发送请求
  2. 获取数据
  3. 解析数据 parsel ? 帮助解析数据 模块 第三方模块
  4. 保存数据
  5. 多页爬取
  6. 代码封装成函数 使用线程池爬取

导入模块

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批量采集商品数据并使用多线程(含完整源码)相关推荐

  1. Python编程:打造太空入侵者游戏(含完整源码)

    Python编程:打造太空入侵者游戏(含完整源码) 太空入侵者这款游戏经典得让人不能忘怀,而Python语言的简单易学.快速开发的特性,使其成为实现该游戏的最好选择.在本篇文章中,我们将为读者呈现如何 ...

  2. 【python数据分析】对淘商品类母婴购物数据进行分析(含完整源码)

    前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 一.数据集 ​ 今天我们来看一个来着阿里云天池的数据集:淘母婴购物数据,有两个csv文件: 1.mum_baby.csv 它包 ...

  3. JavaGUI:多功能计算器(五)--Swing实现双语数据包+菜单切换(完整源码+EXE下载)

    JavaGUI:多功能计算器(五)–Swing实现双语数据包+菜单切换(完整源码+EXE下载) 本文资源下载: 程序源码及可独立运行的EXE文件自解压包(32bit): 多功能计算器v0.41[双语界 ...

  4. Python实现修改图片分辨率(含完整源码)

    Python实现修改图片分辨率(含完整源码) 在我们日常的工作和学习中,经常需要处理图片.有时候,我们可能需要修改图片的分辨率,以适应不同的需求.本文将介绍如何使用Python来实现修改图片的分辨率, ...

  5. Python基于Django的电影推荐系统和论坛项目完整源码

    前些天发现了十分不错的人工智能学习网站,通俗易懂,风趣幽默,没有广告,分享给大家,大家可以自行看看.(点击跳转人工智能学习资料) 微信公众号:创享日记 发送:电影论坛 获取完整论文报告+项目源码源文件 ...

  6. Python实现行业轮动量化选股【附完整源码】

    编者荐语: 所谓山不转水转,行业中的动量也存在一定的轮换效应.今天给大家分享一篇来自<量化小白上分记>的研报复现文章,基于因子动量.波动率.偏度.峰度来刻画行业轮动,对于构建行业轮动量化选 ...

  7. 美女如何无水印下载?python带你批量采集(含完整源码)

    环境介绍: python 3.8 解释器 pycharm 2021专业版 >>> 激活码 编辑器 谷歌浏览器 谷歌驱动 selenium >>> 驱动 >&g ...

  8. Python爬取天气数据及可视化分析(附源码)

    大家好,我是辰哥(文末送书) 天气预报我们每天都会关注,我们可以根据未来的天气增减衣物.安排出行,每天的气温.风速风向.相对湿度.空气质量等成为关注的焦点.本次使用python中requests和Be ...

  9. 使用python 采集某网站全站美女图片 ,这么好看得图还不学起来(含完整源码)

    本次目的: python 抓取某某站图片 本次亮点: 系统性分析页面 多页面数据解析 海量图片数据保存 开发环境 & 第三方模块: 解释器版本 >>> python 3.8 ...

最新文章

  1. WPF框架的内存泄漏BUG
  2. NLP模型BERT和经典数据集!
  3. ASP.NET 网页- WebGrid 帮助器简介
  4. BigDecimal使用时的参数详解
  5. C++中Delete时堆错误(Heap Corruption)的原因
  6. 数据库事务的四大特性以及事务的隔离级别详解
  7. HDU Problem - 1969 Pie(二分,精度)
  8. 苹果CMS音乐猪自适应网站模板
  9. postman如何测试php接口_基于Postman的API自动化测试
  10. 软件工程复习提纲——第一章
  11. 北京这些5平米不到的外卖窗口,居然能够排起100米以上的长龙!
  12. linux pppoe 共享上网,Linux操作系统下如何PPPOE拨号共享上网?
  13. Flutter获取packageName和versionCode
  14. 从进化的角度看为啥要均贫富
  15. 妈妈帮上云之路:云上平台架构与运维实践
  16. python编写英文字典_python如何制作英文字典
  17. 双子星量子计算机,【前沿】“前途”无量的量子科技
  18. 复利的谎言,很多人都中圈套了!!
  19. TCP/IP 模型与 OSI 模型对比
  20. Geogebra键盘输入快捷键

热门文章

  1. AI (Adobe Illustrator)详细用法(四)
  2. 《安富莱嵌入式周报》第254期:2022.02.21--2022.02.27
  3. PDF--软件操作大全
  4. 【智能家居】苹果HomeKit、米家、aqara怎么选?用智汀掌控一切
  5. 逆傅里叶变IFFT原始信号恢复方法研究-附Matlab代码
  6. L1-049 天梯赛座位分配 (20分)(C语言)
  7. 微信小程序转uniapp
  8. 公司设备换新,哪家智能会议平板好?
  9. 微型电子计算机网络,一种计算机网络安全的微型盒装置的制作方法
  10. [C语言]使用指针将输入的多个字符串按大小升序排序