scrapy进阶《封号码罗》之如何优雅的征服世界首富亚马逊(amazon.com)

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&a 阅读详情

免责声明:原创文章,仅用于学习,希望看到文章的朋友,不要随意用于商业,本作者保留当前文章的所有法律权利。欢迎评论,点赞,收藏,转发!
关于亚马逊的爬虫,针对不同的使用场合,前前后后写了有六七个了,今天拿出其中一个爬虫,也是相对其他几个爬虫难度稍微大一些的,这个爬虫用到了我之前没有使用过的一个爬虫手法,虽然头疼了一天半的时间,不过最终还是写出来了!
先上爬到结果,一睹芳容!
在这里插入图片描述

# settings.py我也就是修改了一下请求头,没有别的什么参数好设置的
DEFAULT_REQUEST_HEADERS = {
   
   
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
    # 'accept-language': 'q=0.9,en;q=0.8',
    'cookie': 'session-id=142-3668058-0487211; ubid-main=132-5736401-5537057; aws-priv=eyJ2IjoxLCJldSI6MCwic3QiOjB9; aws-target-static-id=1571291023940-335290; aws-target-data=%7B%22support%22%3A%221%22%7D; regStatus=pre-register; x-wl-uid=1LHDAujloWlUxmLRzSHozWKl4n+BjwQ2HAyx7BwxROqQZnIHpINHbdwLexNggVVlabqGiYHdV0mXMW5ff7gGrjphRIfQrPuY1K2hUDtmzEfxUq8TcFsULMzLCDQvtlRSLjglCTB2mI6s=; s_pers=%20s_fid%3D2A84D84A05E2C5F6-0DC9D42BD2FBEA5E%7C1730205389961%3B%20s_dl%3D1%7C1572354389963%3B%20gpv_page%3DUS%253AAS%253ASOA-overview-footer%7C1572354389971%3B%20s_ev15%3D%255B%255B%2527SCSOAlogin%2527%252C%25271571110956217%2527%255D%252C%255B%2527www.amz123.com%2527%252C%25271571446469054%2527%255D%252C%255B%2527SCSOAlogin%2527%252C%25271572352589980%2527%255D%255D%7C1730205389980%3B; s_fid=0AEE278A3A21C88C-034FF405EC91CDA6; s_vn=1602827024206%26vn%3D3; aws-target-visitor-id=1571291023943-752944.22_23; s_dslv=1572355541019; s_nr=1572355541021-Repeat; x-amz-captcha-1=1573628129095978; x-amz-captcha-2=py3BFrzl/i7mmCMvLgvRWQ==; session-id-time=2082787201l; x-main="ABFV62tSPQuPy5A0H2hXH2Nv6N?Zp0FnRoNywwX7sB3zYoSM94HI8tx5NgCAe1qG"; at-main=Atza|IwEBIBmgXA3krCYRAJ68T43x9IbC8ZiNWTKIS5uloe1JAnpwaOIQHK5jLLVgObHmiZ8UMEn8J5J7FK-bOFnwPodLFyBZYkW31uPz2dEqjRaK8PZrgpddmbTJ9KG4XhvcOoq0kMqfZUoBCL2QgV3ksB46tOO306Gf9BnmGk1_rTOMic7NFC9xsFzacybCm4RP4aAzuB-stwk7PoezghoWOQpT7zm3h5I8nsmK8kxUSz8iuouiG9v6gBPlyAetoPqa-3otO4yblvccuxYGaE-poYa3YrEsJRMRqAGrwpMskNgVQvNmw7E-7IkFyhCYknqjzt9P-HHs_bETzvXeCQOQteucpz3EXVBOeAf7-lAnWd4FtwA-7krD87ihhTiJANeB7yITUuXQGQP5IlHvSDcL9p37GQtI; sess-at-main="7/3eFhu1sYbjdEAn60gUzC3eSQSFPhjBNfi4dQuXwvs="; sst-main=Sst1|PQGB34zV-KtTdN4khU4KMMhpC-joyMrwsBrk4vA8n8M9ngDRZ0jZy68rXm0E8vH_CyBzoGL4W8x6XAsch693MoCyY5w1Aw2hIhCoafjkfOxhKrd9RHT0HDxZhQLAFTIs7DtW23UQkxccnPtletjCjGsCc8Cis27vApJr0p-0p6n-K9DOZzTFSV7O1l06ouOasxrVNOUjOXtxnsSRROguKnqoQSjCLUfJOnsiARe3ASEh_gRD13elbbBFrfH999dzBSL-A3UqGlXfiCXVTK3UGlWuKWftQGv6od-fjW7y5IQtE08VkOSKFIH28IsfstKJJZZ4TfVEniXGoDDGCuEexIzVeg; lc-main=en_US; i18n-prefs=USD; cdn-session=AK-608ed069117695d10fc5a061329ac781; session-token=wt43/36BLQUMTFbQvvH1QOKtBil240+5Mj4WSxFRfdFkcDCJPkc3ArqEArXxoq+VoWksSMKN62/Kq30lGL+yu/30jBNEmNBrYatWdHEBi3WCHskqtAkJsmiR0ZZdMYM6+1QSrCeiPejf7cnCLiaoyNHd0TXhurrBx5QAuBt/zOVNuSfAb13dr7TjZMHfkko4Bu0ytxEmXyMJYqI73S4b91kxLTlo4mmATe7Zx3XDNK9dl88aI5nbl9x+k1gbfilXToALWR8mIjDyYnaubUTkgQ==; skin=noskin; csm-hit=tb:CNZA0DXGWHXW3TBBB800+s-CNZA0DXGWHXW3TBBB800|1577070891800&t:1577070891800&adb:adblk_no',
    'referer': 'https://www.amazon.com/ref=nav_logo?language=en_US',
    'sec-fetch-mode': 'navigate',
    "sec-fetch-site": 'same-origin',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1'
}
RANDOM_UA_TYPE = "chrome"  # 使用谷歌的浏览器ua头
DOWNLOADER_MIDDLEWARES = {
   
   
    # 'yamaxun.middlewares.ProxyMiddleWare': 541,
    'yamaxun.middlewares.YamaxunDownloaderMiddleware': 543,
    'yamaxun.middlewares.RandomUserAgentMiddlware': 542,
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,  # 需要将原始的设置为none
}
ITEM_PIPELINES = {
   
   
    # 'yamaxun.pipelines.YamaxunPipeline': 300,
    # 'yamaxun.pipelines.YamaxunPlPipeline': 301,
    # 'yamaxun.pipelines.YamaxunImgPipeline': 302,
    # 'yamaxun.pipelines.YamaxunFbmPipeline': 303,
    'yamaxun.pipelines.YamaxunCjPipeline': 304,
}

其他的都是一些常规设置,如:ROBOTSTXT_OBEY = False,不再赘述

#items.py	刚开始没头绪,本来想分主体和变体的,后来在分析中发现,没那个必要,名字没有main_也可以通用
class YamaxunCjItem(scrapy.Item):
    main_id = scrapy.Field()                    # id
    main_url = scrapy.Field()                   # 主体url
    main_title = scrapy.Field()                 # 主体标题
    main_asin = scrapy.Field()                  # 主体ASIN
    main_price = scrapy.Field()                 # 主体价格
    main_color = scrapy.Field()                 # 主体颜色
    main_dimensions = scrapy.Field()            # 主体尺码大小
    main_hdimgs = scrapy.Field()                # 主体高清图URL
    main_info_one = scrapy.Field()              # 主体描述1
    main_info_two = scrapy.Field()              # 主体描述2
    main_info_three = scrapy.Field()            # 主体描述3
    main_info_four = scrapy.Field()             # 主体描述4
    main_info_five = scrapy.Field()             # 主体描述5
    main_description = scrapy.Field()           # 主体长描述
    main_weight = scrapy.Field()                # 主体重量
    main_material = scrapy.Field()              # 主体材质

爬虫的主程序如下:

# -*- coding: utf-8 -*-
import scrapy
from yamaxun.items import YamaxunCjItem


class YamaxuncjSpider(scrapy.Spider):
    name = 'yamaxuncj'
    # 需要手动开启setting里面的管道
    custom_settings = {
   
   "ITEM_PIPELINES": {
   
   'yamaxun.pipelines.YamaxunCjPipeline': 304}}
    # allowed_domains = ['amazon.com']
    # start_urls = ['http://amazon.com']
    # 整个店铺 https://www.amazon.com/s?me=AHSA6JF4V43Q1&marketplaceID=ATVPDKIKX0DER
    # 店铺中的搜索关键字 https://www.amazon.com/s?k=thermos+cup&me=A2AJJBXRGY125X&ref=nb_sb_noss
    start_url = []
    BASE_URL = "http://www.amazon.com"
    SUB_URL = "http://www.amazon.com/dp/"

    def __init__(self, *args, **kwargs):
        super(YamaxuncjSpider, self).__init__(*args, **kwargs)
        # goods_name = kwargs["goods_name"]
        # goods_name = "energy saving lamp"                           # 爬不同的数据,只需要修改这里,注意:保存文件名的修改,.txt和.json
        # self.url = "https://www.amazon.com/s?me=AHSA6JF4V43Q1&marketplaceID=ATVPDKIKX0DER"
        self.url = "https://www.amazon.com/s?k=thermos+cup&me=A2AJJBXRGY125X&ref=nb_sb_noss"

    def start_requests(self):
        print("当前链接是", self.url)
        yield scrapy.Request(url=self.url, callback=self.parse, dont_filter=True)

    def parse(self, response):
        print("---------------------------------进入到列表页------------------------------------------")
        # 进入到了列表页,不拿数据,主要在详情页拿数据
        # with open("asd.html", "w", encoding="utf-8") as f:
        #     f.write(response.text)
        detail_url = response.css('a[class="a-link-normal a-text-normal"]::attr(href)').extract()
        if "?k" in self.url:
            detail_url = detail_url[1:]
        else:
            detail_url = detail_url[0:]
        id = 0
        # 测试单个商品拿数据
        # detail_url = [
        #     "/Tulip-Cupcake-Liners-300-Pack-Restaurants/dp/B07V3Z8VLG/ref=sr_1_fkmr2_2?keywords=thermos+cup&m=A2AJJBXRGY125X&qid=1578100381&s=merchant-items&sr=1-2-fkmr2"]
        for i in detail_url:
            id += 1
            item = dict()  # 设置一个空字典
            item["main_id"] = id
            url = self.BASE_URL + i
            item["main_url"] = url
            print("当前是第%d个链接" % id, url)
            yield scrapy.Request(url=url, callback=self.detailParse, dont_filter=True, meta={
   
   "item"
用Python获取Amazon亚马逊的商品信息 1.首先获取亚马逊列表页的信息 以视频游戏区为例: 获取列表内能获取到的商品信息,如商品名,详情链接,进一步获取其他内容。 用requests.get()获取网页内容,xpath选取相关标签的内容: import requests from parsel import Selector from urllib.parse import urljoin spiderurl = 'https://www.amazon.com/s?i=videogames-intl-ship' headers = 阅读详情

相关推荐

Scrapy爬取亚马逊商品信息

关键词:Scrapy spider pipeline xpath 参考文档 Scrapy 0.24中文版官方文档(PDF格式) csdn下载 Xpath教程 W3school-XPath 目标:将亚马逊的上的手机信息爬取下来,包括价格、描述信息、URL 。 新建一个项目:scrapy startproject YamaxunPhone新建完项目后,该项目的目录结构如下:YamaxunP

会开花的树 6539

干货|爬虫被封的几个常见原因

爬虫采集成为很多公司企业个人的需求,但正因为如此,反爬虫的技术也层出不穷,像时间限制、IP限制、验证码限制等等,都可能会导致爬虫无法进行,所以也出现了很多像代理IP、时间限制调整这样的方法去接触反爬虫限制,当然具体的操作方法需要你针对性的去研究。 爬虫采集数据过程中经常会出现受限问题,那么具体哪些原因会导致爬虫被禁封呢? 1、检查JavaScript 如果你从网络服务器收到的页面是空白的,缺少信息...

li_zhi521的博客 4870

python爬虫|爬取亚马逊商品库存数据(Selenium实战)

前言 很多人把selenium爬虫称之为可视化爬虫,之所以这样认为,主要在于selenium爬虫主要是模拟人的点击操作,而selenium驱动浏览器并进行操作的过程是可以观察到的。换言之,就是你在看着别人在帮你操纵你的电脑,类似于别人远程使用你的电脑,需要提到的是,selenium也有无界面模式。 下面,直接进入正文,以亚马逊商品数据为例,获取商品的当前库存数据。 正文 想要获取亚马逊的库存数据,那就需要先明白,亚马逊商品的库存数据是怎么获得的。 1.打开商品界面之后,需要先点击加入购物车.

Python进阶专栏《爬虫实战进阶》,《Pyppeteer从入门到精通》原创作者 6915

python+selenium爬取亚马逊商品评论详情

亚马逊评论详情页是动态加载的,不过多折腾,直接用selenium进行爬取;用pandas写入csv文件,解决乱码、无序问题;

爬取亚马逊中国版某商品的信息

爬取亚马逊中国版商品的页面信息,主要用到的是selenium

Python实现爬取亚马逊数据并打印出Excel文件操作示例

主要介绍了Python实现爬取亚马逊数据并打印出Excel文件操作,结合实例形式分析了Python针对亚马逊图书数据的爬取操作,以及数据打印输出Excel相关实现技巧,需要的朋友可以参考下

手把手教你用LIO-SAM搞定激光雷达和IMU联合标定(附避坑指南)

本文详细介绍了使用LIO-SAM进行激光雷达与IMU联合标定的全流程,包括标定原理、工具选型、硬件配置、数据采集、LI_calib标定步骤及LIO-SAM集成验证。特别提供了避坑指南和参数优化技巧,帮助开发者高效完成传感器标定,提升自动驾驶和机器人定位精度。

hadoop5ranger的博客 995

PFC中pb模型实战:从胶结参数设置到破坏模拟全流程解析

本文详细解析了PFC软件中平行胶结模型(PB模型)的实战应用全流程。从胶结参数(pb_kn, pb_ks, pb_ten等)的物理意义与精准赋值入手,深入探讨了模型构建、胶结施加以避免初始损伤的技巧,并系统介绍了破坏过程的监测、阈值判定方法以及高级可视化与常见问题诊断。旨在帮助岩土工程与颗粒材料研究者掌握从参数调试到破坏模拟的核心操作,提升数值模拟的准确性与效率。

php55的博客 1074

【零基础入门unity游戏开发——unity通用篇12】导入导出unity资源包、设置编程工具、创建脚本(组件)规则、MonoBehaviour基类介绍、脚本模板(基于unity6开发介绍)

导入导出unity资源包、设置编程工具、创建脚本(组件)规则、MonoBehaviour基类介绍、脚本模板(基于unity6开发介绍)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 758

华为OD机试新系统真题-魔法咒语组合(Java/Py/C++/Go/C/Js)

华为OD机试 新系统真题【魔法咒语组合】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【魔法咒语组合】多语言题解

qq_45776114的博客 666

12、认知地图的建模与学习

本博客系统介绍了认知地图的定义、背景及其在机器智能领域的应用,重点探讨了模糊认知地图(FCMs)的建模方法与优势。文章还对比分析了几种主流的认知地图模型(如Axelrod模型、Kosko模型等),并讨论了模型的稳定性条件及实际应用前景。通过智能制造和医疗诊断的具体案例,展示了认知地图在复杂因果推理中的强大能力,并提出了模型优化方向与未来研究展望。

plant的博客 208

图像标注神器:完全开源免费的多功能标注工具Labelme详解

Labelme是MIT开发的免费开源图像标注工具,支持多边形、矩形等多种标注类型,适用于目标检测、分割等计算机视觉任务。提供Windows可执行文件和Python安装两种方式,可输出JSON格式并转换为COCO等标准数据集。具有跨平台、功能全面、社区活跃等优势,能显著提升标注效率,是AI视觉项目的重要数据准备工具。

数字人生 526

毕设-MobileNetV4:给YOLOv8装上轻量化“引擎”——通用瓶颈与C2f融合的实战教程

本文介绍了一种将MobileNetV4与YOLOv8结合的目标检测模型轻量化方案。MobileNetV4通过通用瓶颈(UB)结构实现多任务适配,其核心改进包括动态卷积核、注意力机制和多路径特征聚合,显著提升特征提取能力。作者详细阐述了如何在YOLOv8框架中实现MobileNetV4的通用瓶颈模块,包括"膨胀-卷积-注意力-压缩"的流程设计,并构建完整的backbone网络。该方案通过融合MobileNetV4的轻量化优势与YOLOv8的高效检测架构,在移动设备上实现了精度与速度的良好平

FJN110的博客 502

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: django+vue+nginx+uwsgi部署centos7,仅需九步
下一篇: scrapy进阶《封号码罗》之如何优雅的获取网页JavaScript中的数据(www.amazon.co.uk)
Python  键盘上的舞者
博客等级 码龄8年 1037粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值