热门标签 | 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。


推荐阅读
  • Java EE CDI:解决依赖关系冲突的实例
    在本教程中,我们将探讨如何在Java EE的CDI(上下文和依赖注入)框架中有效解决依赖关系的冲突问题。通过学习如何使用限定符,您将能够为应用程序的不同客户端提供多种接口实现,并确保每个客户端都能正确调用其所需的实现。 ... [详细]
  • 本文详细介绍了Oracle数据库中审计日志(audit trail)的配置方法及各参数选项的功能,包括如何启用系统范围的审计记录,以及如何将审计数据存储在不同的位置和格式。 ... [详细]
  • 本文探讨了如何在Node.js环境中,通过Tor网络使用的SOCKS5代理执行HTTP请求。文中不仅提供了基础的实现方法,还介绍了几种常用的库和工具,帮助开发者解决遇到的问题。 ... [详细]
  • 本文探讨了浏览器的同源策略限制及其对 AJAX 请求的影响,并详细介绍了如何在 Spring Boot 应用中优雅地处理跨域请求,特别是当请求包含自定义 Headers 时的解决方案。 ... [详细]
  • 本文将介绍如何利用Python爬虫技术抓取国内主流在线学习平台的数据,并以51CTO学院为例,进行详细的技术解析和实践操作。 ... [详细]
  • 探索Squid反向代理中的远程代码执行漏洞
    本文深入探讨了在网站渗透测试过程中发现的Squid反向代理系统中存在的远程代码执行漏洞,旨在帮助网站管理者和开发者了解此类漏洞的危害及防范措施。 ... [详细]
  • Canvas漫游:碰撞检测与动画模拟
    探索Canvas在Web开发中的应用,通过碰撞检测与动画模拟提升交互体验。 ... [详细]
  • Java Servlet中获取客户端IP与MAC地址的方法
    本文介绍了一种在Java Servlet应用中获取客户端IP地址及MAC地址的技术实现方法,通过示例代码详细解析了获取过程中的关键步骤和技术点。 ... [详细]
  • YB02 防水车载GPS追踪器
    YB02防水车载GPS追踪器由Yuebiz科技有限公司设计生产,适用于车辆防盗、车队管理和实时追踪等多种场合。 ... [详细]
  • JavaScript:简洁与复杂之间的平衡
    本文探讨了在编写JavaScript教程时,如何在保持内容简洁的同时,确保初学者能够理解并应用实际开发中的复杂问题。文章通过具体示例分析了不同层次的JavaScript代码实现。 ... [详细]
  • 本文将详细介绍NSRunLoop的工作原理,包括其基本概念、消息类型(事件源)、运行模式、生命周期管理以及嵌套运行等关键知识点,帮助开发者更好地理解和应用这一重要技术。 ... [详细]
  • 主板市盈率、市净率及股息率的自动化抓取
    本文介绍了如何通过Python脚本自动从中国指数有限公司网站抓取主板的市盈率、市净率和股息率等关键财务指标,并将这些数据存储到CSV文件中。涉及的技术包括网页解析、正则表达式以及异常处理。 ... [详细]
  • 尽管PHP是一种强大且灵活的Web开发语言,但开发者在使用过程中常会陷入一些典型的陷阱。本文旨在列出PHP开发中最为常见的10种错误,并提供相应的预防建议。 ... [详细]
  • 深入探讨ASP.NET中的OAuth、JWT与OpenID Connect
    本文作为前文关于OAuth2.0和使用.NET实现OAuth身份验证的补充,详细阐述了OAuth与JWT及OpenID Connect之间的关系和差异,旨在提供更全面的理解。 ... [详细]
  • 优化使用Apache + Memcached-Session-Manager + Tomcat集群方案
    本文探讨了使用Apache、Memcached-Session-Manager和Tomcat集群构建高性能Web应用过程中遇到的问题及解决方案。通过重新设计物理架构,解决了单虚拟机环境无法真实模拟分布式环境的问题,并详细记录了性能测试结果。 ... [详细]
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社区 版权所有