热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python爬虫实战:获取京东手机价格和参数

本文通过一个具体的案例,展示了如何使用Python爬虫技术从京东网站爬取手机的价格和参数。最近发布的iPhoneX虽然价格昂贵,但不妨碍我们探索其他高性价比的国产手机。

本文将通过一个具体的案例,展示如何使用 Python 爬虫技术从京东网站爬取手机的价格和参数。最近发布的 iPhone X 虽然价格高达1万元,但其设计和性能仍值得探讨。不过,为了寻找更多高性价比的选择,我们将重点放在国产手机上。

使用工具:火狐浏览器,HttpFox

1. 找到目标网址,并翻阅几页以获取更多的数据。

2. 打开网页源代码,找到包含手机信息的部分,如下图所示:

3. 提取所需的信息。例如,手机名称可以通过以下代码获取:

phone_html = soup.find_all(name='div', attrs={'class': 'p-name'})

4. 进入某个手机的详细页面,发现价格信息并未直接显示在源代码中。此时,可以使用 HttpFox 工具,在网络请求中找到价格信息,如下图所示:

5. 编写代码实现数据抓取。以下是完整的代码示例:

# -*- coding:utf-8 -*-
from bs4 import BeautifulSoup
import requests
import re

def get_phone_list():
    phOnes= {}
    for page in range(1, 3):  # 采集1到2页的手机价格
        url = f'https://list.jd.com/list.html?cat=9987,653,655&ev=exprice_M2800L4499&page={page}&sort=sort_rank_asc&trans=1&JL=6_0_0&ms=6#J_main'
        session = requests.Session()
        respOnse= session.get(url).text
        soup = BeautifulSoup(response, 'html.parser')
        phone_html = soup.find_all(name='div', attrs={'class': 'p-name'})
        for item in phone_html:
            for link in item.find_all('a'):
                phone_id = link.get('href')[14:-5]
                phone_name = link.get_text().strip()
                phones[phone_id] = phone_name
    return phones

if __name__ == '__main__':
    phOnes= get_phone_list()
    with open('phone_prices.txt', 'w', encoding='utf-8') as file:
        for phone_id in phones:
            price_url = f'https://p.3.cn/prices/mgets?callback=jQuery6983933&type=1&area=1_72_2799_0&pdtk=&pduid=14995199449641080515414&pdpin=&pin=null&pdbp=0&skuIds=J_{phone_id}&ext=11000000&source=item-pc'
            session = requests.Session()
            price_respOnse= session.get(price_url).text
            price = re.findall(r'"p":"(.*?)"', price_response)[0]
            file.write(f'{phones[phone_id]}: {price}
')
            print(f'{phones[phone_id]}: {price}
')

通过上述代码,我们可以将手机的价格信息保存到一个文本文件中,如下图所示:

最后,虽然 iPhone X 的设计独特,但我们仍然推荐考虑一些高性价比的国产手机,例如小米 Mix 2。


推荐阅读
  • 本文介绍了如何使用Python爬取妙笔阁小说网仙侠系列中所有小说的信息,并将其保存为TXT和CSV格式。主要内容包括如何构造请求头以避免被网站封禁,以及如何利用XPath解析HTML并提取所需信息。 ... [详细]
  • 普通树(每个节点可以有任意数量的子节点)级序遍历 ... [详细]
  • 本文详细介绍了如何使用Python的多进程技术来高效地分块读取超大文件,并将其输出为多个文件。通过这种方式,可以显著提高读取速度和处理效率。 ... [详细]
  • python模块之正则
    re模块可以读懂你写的正则表达式根据你写的表达式去执行任务用re去操作正则正则表达式使用一些规则来检测一些字符串是否符合个人要求,从一段字符串中找到符合要求的内容。在 ... [详细]
  • 目录预备知识导包构建数据集神经网络结构训练测试精度可视化计算模型精度损失可视化输出网络结构信息训练神经网络定义参数载入数据载入神经网络结构、损失及优化训练及测试损失、精度可视化qu ... [详细]
  • Python多线程详解与示例
    本文介绍了Python中的多线程编程,包括僵尸进程和孤儿进程的概念,并提供了具体的代码示例。同时,详细解释了0号进程和1号进程在系统中的作用。 ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • Python函数的高级用法[python基础]
    Python的函数也是一种值:所有函数都是function对象,这意味着可以把函数本身赋值给变量,就像把整数、浮点数、列表、元组赋值给变量一样;同样可以使用函数作为函数的形参,也可 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom"echarts";4、如果用到map(地图),还 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • 使用Tkinter构建51Ape无损音乐爬虫UI
    本文介绍了如何使用Python的内置模块Tkinter来构建一个简单的用户界面,用于爬取51Ape网站上的无损音乐百度云链接。虽然Tkinter入门相对简单,但在实际开发过程中由于文档不足可能会带来一些不便。 ... [详细]
  • packagecom.panchan.tsmese.utils;importjava.lang.reflect.ParameterizedType;importjava.lang. ... [详细]
  • 本文介绍了Go语言中正则表达式的基本使用方法,并提供了一些实用的示例代码。 ... [详细]
  • 本文介绍了如何处理在Xcode构建过程中出现的多个命令生成相同文件的问题,特别是当这些文件与Info.plist无关时。 ... [详细]
author-avatar
housyou晶
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有