用Python实现爬虫爬取京东笔记本电脑图片
最近需要从网上搜集一些数据,于是花了几个小时把爬虫学了一下。其实我在两年前的一个简单的站内搜索引擎的实现已经涉及到了简单的爬虫,不过那时候老想着偷懒,加上山大新闻网的设计又很好爬,所以当时写得很low,因而有网友问我要爬虫代码的时候也没好意思给。今天翻了一下韦玮老师的精通Python网络爬虫,一口气看了前六章,就想写一个简单的爬虫来练习一下。书中有一个爬取京东的手机图片的例子,我只好来爬笔记本电脑了。本意是想爬一下笔记本电脑的价格,做一个统计分析出来的,结果发现京东上面商品的价格是通过JS来获取的,可我不太懂JS,然后掂量了一下自己这几个小时的爬虫功底……就又开始偷懒了,于是乎改成了爬取笔记本电脑的图片和名字。给这篇文章的定位,大概是相当于一个课后小作业的形式,还望各位高手不要笑话。下面来介绍这个实现过程。
首先,在浏览器中打开京东的笔记本电脑商品页面
我们需要寻找有关笔记本电脑商品网页的规律。拖到页面底部,我们发现,京东有关笔记本电脑商品信息的页面总共有900多页。
分析这些页面的规律可以发现它们的URL是有规律的,下面是第2页的网址,其中有个 page=2 ,我们发现如果想转到第 x页,只需要把下面网址中的2变换为 x 就可以了。
https://list.jd.com/list.html?cat=670,671,672&page=2&sort=sort_totalsales15_desc&trans=1&JL=6_0_0#J_main
接下来,分析网页的代码。按F12打开开发者工具调试界面。
在element中找到与商品信息有关的代码部分,可以看出其id是plist,据此写出正则表达式:
pattern1 = '<div id="plist"((.|\n)+?)<div class="page clearfix">'
然后就可以提取出与商品有关的代码:
pattern1 = '<div id="plist"((.|\n)+?)<div class="page clearfix">'
goods = re.compile(pattern1).findall(html1)
goods = goods[0]
goods = goods[0]
接下来,查找每一个商品单元格对应的代码,可以发现每一个商品格子都对应一个gl-item的<li>
据此,将其从前面得到的goods中提取出来:
item_pattern = '<li class="gl-item">((.|\n)+?)</li>'
compute_list = re.compile(item_pattern).findall(goods)
提取出来之后的compute_list是一个list的形式,其中的每个元素对应一个商品格的代码。接下来我们需要对每一个商品格的代码进行分析,从中提取出图片的地址和笔记本电脑的名称。方法与前面相似:
compute_str = compute[0]# 提取图片image_pattern = '<img width="220" height="220" data-img="1" src="//(.+?\.jpg)'image_url = re.compile(image_pattern).findall(compute_str)image_url = image_url[0]image_url = "http://" + image_url # 图片网址# 提取商品名称name_div_pattern = '<div class="p-name">((.|\n)+?)</div>'name_div = re.compile(name_div_pattern).findall(compute_str)name_div = name_div[0]name_div_str = name_div[0]name_pattern = '<em>\n(.+?)</em>'name = re.compile(name_pattern).findall(name_div_str)name = name[0]
这样就成功地提取到了一种笔记本的图片地址和名称。接下来我们只需要加一个万能的for循环,就可以获取所有的笔记本的图片地址和商品名了。全部代码如下所示:
import re
import urllib.request as request
import urllibdef craw(url, page, save_path):"""爬取京东笔记本电脑的图片和名称:param url: 网址:param page::param save_path: 存储路径:return:"""html1 = request.urlopen(url).read().decode('utf-8')pattern1 = '<div id="plist"((.|\n)+?)<div class="page clearfix">'goods = re.compile(pattern1).findall(html1)goods = goods[0]goods = goods[0]item_pattern = '<li class="gl-item">((.|\n)+?)</li>'compute_list = re.compile(item_pattern).findall(goods)index = 1for compute in compute_list:try:compute_str = compute[0]# 提取图片image_pattern = '<img width="220" height="220" data-img="1" src="//(.+?\.jpg)'image_url = re.compile(image_pattern).findall(compute_str)image_url = image_url[0]image_url = "http://" + image_url # 图片网址# 提取商品名称name_div_pattern = '<div class="p-name">((.|\n)+?)</div>'name_div = re.compile(name_div_pattern).findall(compute_str)name_div = name_div[0]name_div_str = name_div[0]name_pattern = '<em>\n(.+?)</em>'name = re.compile(name_pattern).findall(name_div_str)name = name[0]image_path = save_path + "Page" + str(page) + "-" + str(index) + name + ".jpg"try:request.urlretrieve(image_url, filename=image_path)except urllib.error.URLError as e:if hasattr(e, "code"):index += 1if hasattr(e, "reason"):index += 1except Exception as e:continueindex += 1def run():url = "https://list.jd.com/list.html?cat=670,671,672&page=1&sort=sort_totalsales15_desc&trans=1&JL=6_0_0#J_main"save_path = "E:\\Project\\Spider\\JDcomputes\\"for i in range(1, 962):url = "https://list.jd.com/list.html?cat=670,671,672&page=" + str(i)url = url + "&sort=sort_totalsales15_desc&trans=1&JL=6_0_0#J_main"craw(url, i, save_path)if i % 50 == 0:print(i)if __name__ == '__main__':run()
最终爬取的结果如下所示:
可见,总共爬取到了4566个电脑的信息。
这个小demo由于链接的规律比较简单,还没有涉及到链接分析等内容,因而只是一个用来体验一下爬虫的小实验吧。
用Python实现爬虫爬取京东笔记本电脑图片相关推荐
- python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
这篇文章主要介绍了python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析的实例,帮助大家更好的理解和学习使用python.感兴趣的朋友可以了解下 一.环境准备 python3.8.3 ...
- Python动态爬虫爬取京东商品评论
Python 动态爬虫爬取京东商品评论 1. 概述 京东商城是Python爬虫初学者试手的经典平台,反爬虫程度较低,但评论采取了动态加载的方式,爬取京东商品评论是学习动态爬虫的一个极佳方法. 动态爬虫 ...
- python制作爬虫爬取京东商品评论教程
python制作爬虫爬取京东商品评论教程 作者:蓝鲸 类型:转载 本文是继前2篇Python爬虫系列文章的后续篇,给大家介绍的是如何使用Python爬取京东商品评论信息的方法,并根据数据绘制成各种统计 ...
- python爬取京东手机数据_实例解析Python如何实现爬取京东手机图片
本文主要为大家分享一篇Python如何实现爬取京东手机图片的方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧,希望能帮助到大家. 运行环境Python3.6.4#爬取京东手机图片i ...
- 网络爬虫---用urllib模块爬取京东笔记本电脑的数据、并对其做一个可视化
用urllib模块爬取京东笔记本电脑的数据.并对其做一个可视化 文章目录 用urllib模块爬取京东笔记本电脑的数据.并对其做一个可视化 一.前言 二.知识要求 三.过程分析 1.观察主页面和每个电脑 ...
- Python爬取京东笔记本电脑,来看看那个牌子最棒!
一.前言 二.知识要求三.过程分析1.观察主页面和每个电脑界面的网址2.寻找每个电脑的id3.找到存放电脑的价格和评论数的信息4.爬取信息的思路四.urllib模块爬取京东笔记本电脑的数据.并对其做一 ...
- Python爬取京东笔记本电脑,来看看那个牌子最棒
@图片自制by小si 一.前言 二.知识要求三.过程分析1.观察主页面和每个电脑界面的网址2.寻找每个电脑的id3.找到存放电脑的价格和评论数的信息4.爬取信息的思路四.urllib模块爬取京东笔记本 ...
- python爬虫爬取京东、淘宝、苏宁上华为P20购买评论
爬虫爬取京东.淘宝.苏宁上华为P20购买评论 1.使用软件 Anaconda3 2.代码截图 三个网站代码大同小异,因此只展示一个 3.结果(部分) 京东 淘宝 苏宁 4.分析 这三个网站上的评论数据 ...
- 爬取京东笔记本电脑销量榜每件商品详情页url,并存入云服务器中的mysql库
文章目录 一.目的分析 二.爬取页面商品所有详情页链接 1.爬取href链接 2.将数据存入数据库 完整代码: 三.多线程优化版已完成 (多线程优化)爬取京东笔记本电脑销量榜data-sku(商品id ...
最新文章
- PTA数据结构与算法题目集(中文)7-12
- 安装Ubuntu13.10后必做的10件事
- PowerShell 调用dll
- anemometer mysql_MySQL慢日志简介及Anemometer工具介绍 | | For DBA
- SpringMVC-学习笔记03【SpringMVC常用注解】
- 如何在 NET 程序万种死法中有效的生成 Dump (下)
- leetcode1536. 排布二进制网格的最少交换次数(贪心算法)
- 解决:bash: vim: command not found、docker 容器不识别 vi / vim 、docker 容器中安装 vim
- Linux异步之信号(signal)机制分析
- 01.QT中点击弹出新页面
- 小米装android4.4,在VM已安装Android4.4 连接小米手环 网络设置
- H5自带的type=date或者month等日期控件移动端显示placeholder
- Android新增输入设备
- idea中svn颜色代表的文件状态
- 41-MybatisPlus
- PHP:回退(Backed)枚举
- 手势识别整体设计流程方案
- TestFlight构建版本提示缺少出口合规证明
- python解椭圆方程的例题_《椭圆》方程典型例题20例(含标准答案)
- 安科瑞消防应急照明和疏散指示系统