Python一键采集京*东商品数据,保存表格,零基础也能学会

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取

开发环境:

  • python 3.8

  • pycharm 专业版

模块使用:

  • requests >>> 发送请求 第三方库 (需要安装)

  • parsel >>> 第三方库 用来提取网页源代码的

  • csv >>> 内置模块 无需安装

  • time >>> 内置模块 无需安装

模块安装:

win + R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安装速度比较慢, 你可以切换国内镜像源)

代码实现步骤

  1. 发送请求 (用代码 访问对应的网址)

  2. 获取数据

  3. 解析数据 (提取数据 将我们需要的内容提取出来 不需要的 丢弃)

  4. 保存数据 (表格文件)

代码展示

导入模块

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import requests  # 发送请求 第三方库 (需要安装)
import parsel  # 第三方库 用来提取网页源代码的
import csv  # 内置模块 无需安装
import time

保存数据

with open("jingdong.csv", mode='w', newline='', encoding='utf-8') as f:
    csv.writer(f).writerow(['title', 'price', 'shop', 'detail_url'])

模拟浏览器 <可修改> 只加ua得不到数据,考虑加其他的内容 cookie

headers = {
    'Cookie': '__jdu=1675327822068798256204; shshshfpa=a8c4d3ab-4de2-1594-07c6-96937703bc48-1675511732; shshshfpx=a8c4d3ab-4de2-1594-07c6-96937703bc48-1675511732; shshshfp=df23b3178a68c52485e728025047439d; _pst=jd_7449b8b770c1a; unick=u_y14qxm7bysay; pin=jd_7449b8b770c1a; _tp=vZPPhy6cqARc6L2%2B3nOzUq3kCs2OWuApKpEwLezV01A%3D; b_dw=1903; b_dh=962; b_dpr=1; b_webp=1; b_avif=1; autoOpenApp_downCloseDate_auto=1698495726388_1800000; unpl=JF8EAMhnNSttW0IBBBhWGRsWHA9QW1pcQx4APWJSUlRbSABVE1dMQBJ7XlVdXxRLFx9sYxRXXFNLVQ4ZCisSEXteXVdZDEsWC2tXVgQFDQ8VXURJQlZAFDNVCV9dSRZRZjJWBFtdT1xWSAYYRRMfDlAKDlhCR1FpMjVkXlh7VAQrAhwUFEleUldeC0oQCmlvDFdZX0hVACsDKxUge21WX14NTh8zblcEZB8MF1cEEgsbGl1LWlJaXwtNHgBsZgJdW1BCVwEcARoXIEptVw; PCSYCityID=CN_430000_430100_0; thor=459E9A0707CDD36020E74D14717A705AD6CEE67A8D55FEDAACBD33B9D31511E639D728DAFB1FF36D36DE627F8F2F79845F92317DEDEAB842A76D839D99A84DA9F0E3F8B9DBF9C66BF47B74F66CCB0051E6C00FDBFD4545AD7396FD35D9DF2D4EE2B81CFD32ED986FBC3547605F3FA2EFD8C022688992015FFC079D1239A9636A3C6747E1A981BB7272167E6708A9D699AE6D7C17170909155A757473FE3F744E; flash=2_kGENmsBsM776mXDUIck9N5Hr7-RR1caB21t4eIczd1sA64NWUiuUcZCTP974PA7P1w5LFIs7Dq1LubLJleTXpdUeaJ6cT2ac-HBgzp8AdSo*; pinId=f_SKjtPUQ3D1_NrwwoSZkrV9-x-f3wj7; __jdv=76161171|baidu-pinzhuan|t_288551095_baidupinzhuan|cpc|0f3d30c8dba7459bb52f2eb5eba8ac7d_0_28d02e387fc546e982c4f7822ea9dfc3|1700914261968; joyytokem=babel_UEro4WAa7vEhMypakgZQQDqfZhUMDFDd2t1VTk5MQ==.ckBbRWxyQ1hEYnRCXQsQLzQuQmEsOgJMK3JbXVlkb0YVRytyCSo0IBQDMTQ0DjIYIQEyR1gcExkmIw0lIiMPAhp7JCkvZBYlCAwPAjYqNBQCCRU=.3511f139; joyya=1700914317.1700914320.22.01c6v1p; jsavif=1; __jda=122270672.1675327822068798256204.1675327822.1699364622.1700914240.14; __jdc=122270672; areaId=18; ipLoc-djd=18-1482-0-0; shshshsID=7f16a7856e408b5462889269ad6e0b3c_10_1700914558416; __jdb=122270672.9.1675327822068798256204|14.1700914240; 3AB9D23F7A4B3CSS=jdd03BFXLLB72GO2GWA4OW3JSYXJPOVRF3WAKAKETOTSMNISZ6VIJTLEVQKEHWUA6VLD7ORS2QYC55PWBVUZVPZTXPDCHZUAAAAMMAZUHL4AAAAAADDF3D4TATRWIPYX; shshshfpb=AAkh2aAaMEsTTq03iFZQHxpaTdwO8SBZ1URcyaAAAAAA; 3AB9D23F7A4B3C9B=BFXLLB72GO2GWA4OW3JSYXJPOVRF3WAKAKETOTSMNISZ6VIJTLEVQKEHWUA6VLD7ORS2QYC55PWBVUZVPZTXPDCHZU',
    'Origin': 'https://search.jd.com',
    'Referer': 'https://search.jd.com/',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}

多页获取

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
s = 1
for page in range(1, 121):
    t = int(time.time() * 1000)
    body = '{"keyword":"iPhone","qrst":"1","wq":"iPhone","ev":"exbrand_Apple^","pvid":"c2a8f09dbfa044a6a12f860e20edb6c7","isList":0,"page":"' + str(
        page) + '","s":"' + str(s) + '","click":"0","log_id":"1697547020245.6899","show_items":""}'
    if page == 2:
        s = 26
        body = '{"keyword":"iPhone","qrst":"1","wq":"iPhone","ev":"exbrand_Apple^","pvid":"c2a8f09dbfa044a6a12f860e20edb6c7","isList":0,"page":"' + str(
            page) + '","s":"' + str(s) + '","click":"0","log_id":"1697547020245.6899","show_items":""}'
    elif page > 2:
        s += 30
        if page % 2 == 0:
            body = '{"keyword":"iPhone","qrst":"1","wq":"iPhone","ev":"exbrand_Apple^","pvid":"c2a8f09dbfa044a6a12f860e20edb6c7","page":"' + str(
                page) + '","s":"' + str(
                s) + '","scrolling":"y","log_id":"1697545127114.3155","tpl":"3_M","isList":0,"show_items":""}'
        else:
            body = '{"keyword":"iPhone","qrst":"1","wq":"iPhone","ev":"exbrand_Apple^","pvid":"c2a8f09dbfa044a6a12f860e20edb6c7","isList":0,"page":"' + str(
                page) + '","s":"' + str(s) + '","click":"0","log_id":"1697544397338.9790","show_items":""}'
    params = {
        'appid': 'search-pc-java',
        'functionId': 'pc_search_s_new',
        'client': 'pc',
        'clientVersion': '1.0.0',
        't': str(t),
        'body': body,
        'loginType': '3',
        'uuid': '122270672.1675327822068798256204.1675327822.1699364622.1700914240.14',
        'area': '18_1482_0_0',
        'h5st': '20231125202253488;g5giig9tnm63gij2;f06cc;tk03wcf291d0c18nWWFtx6pen6ynAePyLgl8sAR4d4xue8lLvNwODA2L03Vzrmb5U4cXmr_rv9qY_zudES6M8bCoMT_o;cb9e846a92e17e24d3b20741663decba;4.1;1700914973488;ee3cf7f6b94dc20e9265d83066bb9ceece4bb89e2b7e8bf5afb1bfd928788174bfa06c210ddd4437d8a2e234330c3a3980b96c3953b1ab788029ae792b39e113ccac142f09e3a1fa8c3f25055353b835ed0bf65228424626b8a9e1d2c030999d9be97a9dee9fb20116ceb0deb8736546109bc1cf5b91d1dfa2b39c79b3b0f0a5a036cdc921a1f147179b291c830dc87a6d3d0c3885fe721d5f0391a55bb4bf663963282084e04c7f24e6d3bcb219f4cb7cfd3202c38e987146e3ec8ef23fa4659401e38bc57b6c5c13359eb13bdf39a81072e7e1f5d36d7268e19d4c84529eae8e660648fc8bd86dcf267343f8398533e0beede6ef3a273f620464f176480ba2dee25aae40d89a8cb2b033d3274cf53eeb92de682f09f23e19412f37fa309bd2',
        'x-api-eid-token': 'jdd03BFXLLB72GO2GWA4OW3JSYXJPOVRF3WAKAKETOTSMNISZ6VIJTLEVQKEHWUA6VLD7ORS2QYC55PWBVUZVPZTXPDCHZUAAAAMMAZUHL4AAAAAADDF3D4TATRWIPYX',
    }

请求网址

    url = 'https://api.m.jd.com/'
  1. 发送请求 (访问网站)
    response = requests.get(url=url, params=params, headers=headers)
  1. 提取数据 将需要的内容提取出来
    html_data = response.text

怎么样提取网页源代码当中的内容

    select = parsel.Selector(html_data)
    # //ul[@class="gl-warp clearfix"]/li

拿到了每个商品所属的标签

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    lis = select.xpath('//ul[@class="gl-warp clearfix"]/li')
    for li in lis:
        # li.xpath('string(.//div[@class="p-name p-name-type-2"])').get()
        title = li.xpath('string(.//div[@class="p-name p-name-type-2"])').get("").strip()
        price = li.xpath('string(.//div[@class="p-price"])').get("").strip()
        shop = li.xpath('string(.//div[@class="p-shop"])').get("").strip()
        detail_url = "https:" + li.xpath('.//div[@class="p-name p-name-type-2"]/a/@href').get("")
        print(title, price, shop, detail_url)
  1. 保存数据
        with open("jingdong.csv", mode='a', newline='', encoding='utf-8') as f:
            csv.writer(f).writerow([title, price, shop, detail_url])

尾语

最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/210179.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python+Qt5+sqllite 个性化单词记忆软件设计

问题描述&#xff1a; 设计一款背诵英语单词的软件。用户可以根据自己的需求导入需背诵的词库&#xff0c;并可以编辑自己的词库。背单词时有两种模式供选择&#xff1a;系统可以给出中文提示&#xff0c;用户输入对应的单词&#xff0c;也可输出单词让用户输入中文意思。系统判…

Spring---更简单的存储和读取对象

文章目录 存储Bean对象配置扫描路径添加注解存储Bean对象使用类注解为什么需要五个类注解呢&#xff1f;Bean命名规则 使用方法注解重命名Bean 读取Bean对象属性注入Setter注入构造方法注入注入多个相同类型的BeanAutowired vs Resource 存储Bean对象 配置扫描路径 注&#xf…

Linux:动态查看服务器磁盘IO使用情况(IOTOP)

一、安装 yum install -y iotop二、使用 iotop可以看到&#xff0c;每个用户对应的磁盘读写速率以及相应的进程。

数据结构与算法-静态查找表

&#x1f31e; “清醒 自律 知进退&#xff01;” 查找 &#x1f388;1.查找的相关概念&#x1f388;2.静态查找表&#x1f52d;2.1静态查找表的类定义&#x1f52d;2.2顺序查找&#x1f52d;2.3二分查找&#x1f50e;二分查找例题 &#x1f52d;2.4分块查找&#x1f52d;2.5三…

通过转速计算物体的转动弧度(梯形积分法简单应用)

数值积分在累积流量上的应用请参看下面文章链接: https://rxxw-control.blog.csdn.net/article/details/134542089https://rxxw-control.blog.csdn.net/article/details/1345420891200PLC流量累计 https://rxxw-control.blog.csdn.net/article/details/126004031

线程与多线程编程

1. 线程 1.1 概念 线程又可以称为轻量级进程 &#xff0c;在进程的基础上做出了改进。 一个进程在刚刚启动时&#xff0c;做的第一件事就是申请内存和资源&#xff0c;进程需要把依赖的代码和数据&#xff0c;从磁盘加载到内存中这件事是比较耗费时间的&#xff0c;有的业务…

简单测试大语言模型 Yi-34B 的中日英能力

简单测试大语言模型 Yi-34B 的中日英能力 0. 背景1. 中文测试2. 日文测试3. 英文测试 0. 背景 简单测试一下C-Eval 排行榜第一&#xff08;20231129时点&#xff09;的 Yi-34B 的中日英能力&#xff0c; 1. 中文测试 问题1&#xff0c;回答正确。 问题2&#xff0c;回答正确。…

【教3妹学编程-算法题】拼车

3妹&#xff1a;“太阳当空照&#xff0c;花儿对我笑&#xff0c;小鸟说早早早&#xff0c;你为什么背上炸药包” 2哥 :3妹&#xff0c;什么事呀这么开发。 3妹&#xff1a;2哥你看今天的天气多好啊&#xff0c;阳光明媚、万里无云、秋高气爽&#xff0c;适合秋游。 2哥&#x…

SOCKET、TCP、HTTP之间的区别与联系

SOCKET、TCP、HTTP之间的区别与联系 一、 Socket 1、什么是socket2、为什么需要socket3、建立socket连接 二、HTTP(基于TCP) 1、HTTP的概念2、HTTP连接的特点 连接请求&#xff1a;一次连接连接请求&#xff1a;短连接(socket是长连接) 三、TCP/IP协议簇 四、HTTP、Socket…

Linux:查看端口占用的进程

命令 netstat -tunlp可以从图中看到&#xff0c;端口被那个进程占用&#xff0c;对应进程的pid是多少。

哪个软件有消除笔?这三款消除笔轻松消除杂物

想必大家都有遇到日常下载保存的图片中有多余元素想要去除的情况&#xff0c;奈何不会用PS&#xff0c;导致无法快速解决消除图片水印的问题&#xff0c;这时你需要消除笔来帮你一键消除&#xff0c;那么你想知道哪个软件有消除笔&#xff1f;今天来分享几款好用的消除笔软件&a…

jquery 判断是手机端还是电脑端

判断为手机端&#xff1a; var sUserAgent navigator.userAgent.toLowerCase(); var bIsIpad sUserAgent.match(/ipad/i) "ipad"; var bIsIphoneOs sUserAgent.match(/iphone os/i) "iphone os"; var bIsMidp sUserAgent.match(/midp/i) "mid…

Sass 同时导出JavaScript 和 CSS变量

Sass 官网 安装插件 注意 sass-loader 版本没设太高&#xff0c;否则会报错 Syntax Error: TypeError: this.getOptions is not a function npm i sass sass-loader10 -D创建 Sass 文件 variables.module.scss。注意这里是 module.scss&#xff1a; 否则报错 Cant find st…

产品学习之路(一)

在做好开发的同时&#xff0c;还需要熟悉产品业务逻辑&#xff0c;不能为了功能而做功能&#xff0c;要从产品经理的角度去看待每个需求和客户痛点所在&#xff0c;这样针对产品设计出来的东西自己也有发言权&#xff1b; 目前作为一名前端开发人员&#xff0c;也在自学产品知识…

【中文编码】利用bert-base-chinese中的Tokenizer实现中文编码嵌入

最近接触文本处理&#xff0c;查询了一些资料&#xff0c;记录一下中文文本编码的处理方法吧。   先下载模型和词表&#xff1a;bert-base-chinese镜像下载   如下图示&#xff0c;下载好的以下文件均存放在 bert-base-chinese 文件夹下    1. 词编码嵌入简介 按我通俗的…

匿名结构体类型、结构体的自引用、结构体的内存对齐以及结构体传参

文章目录 &#x1f680;前言&#x1f680;结构体✈️结构体类型的声明✈️结构体变量的创建与初始化✈️结构体类型的特殊声明✈️结构体的自引用✈️结构体的内存对齐&#x1f681;修改默认对齐数 ✈️结构体传参 &#x1f680;前言 在C语言中有着各种数据类型&#xff0c;这…

第九节HarmonyOS 常用基础组件3-TextInput

一、TextInput描述 TextInput组件用于输入单行文本&#xff0c;响应输入事件。TextInput的使用也非常广泛&#xff0c;例如应用登录账号密码、发送消息等。和Text组件一样&#xff0c;TextInput组件也支持文本样式设置&#xff0c;下面的示例代码实现了一个简单的输入框&#x…

JavaScript WebAPI(三)(详解)

这次介绍一下webAPI中的一些知识&#xff1a; 回调函数 回调函数是指 如果将函数A做为参数传递给函数B时&#xff0c;我们称函数A为回调函数 例如&#xff1a; // 立即执行函数中传递的函数是一个回调函数 (function(){ console.log("我是回调函数") })(); // …

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之linux存储管理(1)》(17)

《Linux操作系统原理分析之linux存储管理&#xff08;1&#xff09;》&#xff08;17&#xff09; 6 Linux 存储管理6.1 80x86 的分段机制6.1.1 80x86 的虚拟存储空间6.1.2 段描述符表6.1.3 逻辑地址向线形地址的转换 6 Linux 存储管理 6.1 80x86 的分段机制 Linux 最早在 in…

Docker篇之利用docker搭建ftp服务器可实现多用户上传

一、前言 场景&#xff1a;公司需要搭建FTP服务器&#xff0c;供内网之前可以互相传递数据&#xff0c;安全稳定&#xff0c;需要满足开通多个账号&#xff0c;每个用户上传的文件有自己对应的文件目录。 这里建议&#xff1a;用户目录Disk尽量大一点&#xff0c;避免因为空间不…