我是靠谱客的博主 温暖西牛,最近开发中收集的这篇文章主要介绍爬取京东具体商品页面_双十一来临!如何用Python得出京东商品最低价格背景介绍1.导入模块2.商品名称填写区域3.添加报头4.分析商品网页5.正则表达式的确定6.大图的爬取(之前的图片地址是小图)结语,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

背景介绍

一年一度的剁手节--双十一又要到了,不知道你们有没有发现一件事情,有许多商品竟然偷偷得涨价了,小编上次看得一双球鞋,才上个月底加入购物车,今天去看的时候竟然发现价格上涨了一百多!这不能忍呀,于是乎,小编就想如果在最低价的时候入手,然后就想到了它--爬虫!闲来无事的我,就开始琢磨起这事......

802c13272e8c3dcd3bfcc41e66aef220.png

俗话说,实践出真知~
小编在这给大家安利一套《2020最新企业Pyhon项目实战》视频教程,关注小编私信“01”即可获取,希望大家一起进步哦。

1.导入模块

import urllib.requestimport re

2.商品名称填写区域

这里“AJ”只是举个例子,当然也可以输入其他任意商品

keyname="AJ"#输入商品名称key=urllib.request.quote(keyname)

3.添加报头

添加报头的目的是模拟浏览器去访问目标网页,这里我用的是火狐浏览器,当然谷歌也可以,但是需要改一下报头信息

headers=("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0")opener=urllib.request.build_opener()opener.addheaders=[headers]urllib.request.install_opener(opener)

4.分析商品网页

在京东首页先随便搜一个商品,以“男外套“为例子吧:
这是“男外套”第一页的URL:

'''https://search.jd.com/Search?keyword=%E7%94%B7%E5%A4%96%E5%A5%97&enc=utf-8&pvid=7fd9c2174f0b403da73119cfc5fe2f03'''

继续点击第二页、第三页,把对应的URL复制下来进行分析第二页:

'''https://search.jd.com/Search?keyword=%E7%94%B7%E5%A4%96%E5%A5%97&page=3&s=51&click=0'''

第三页

'''https://search.jd.com/Search?keyword=%E7%94%B7%E5%A4%96%E5%A5%97&page=5&s=101&click=0'''

然后进行分析,在keyword后面更换一下商品名称复制到浏览器中打开,会打开京东商城搜索更换的商品名称的页面。
例如把第三页中的keyword后面的”%E7%94%B7%E5%A4%96%E5%A5%97“这一串字符串换为“女外套”,我们发现商城页面从“男外套”变成了“女外套”并已经进行了搜索

ce1ab426f8fd3292cb1f64530b716c8f.png

之前复制的第二个和第三个URL“page=”后面分别是3、5,由于搜索商品的页面默认是第一页,复制下来的URL也跟第二页、第三页差别比较大,于是我试着将“page=”后面的数字改为1,发先页面跳到了第一页;于是我们的URL就可以确定了:

url="https://search.jd.com/Search?keyword="+key+"&wq="+key+"&page="+str(i*2-1);

然后对页面进行访问并读取编码:

data=urllib.request.urlopen(url).read().decode("utf-8","ignore")

5.正则表达式的确定

查看搜索商品页面的源代码,在商品搜索界面先随便复制一张商品图的图像地址,复制在文本中,然后选择复制其中的一段(因为全部复制有可能找不到,实际图片地址和页面源代码里面的图片地址的格式可能不太一样),例如我复制任意一个商品的图片地址中的一段在源代码中进行搜索

dabe79f13a9c7ae39598112c454c6e8b.png

发现商品图片地址前面的标签是“data-lazy-img”然后再在源代码页面搜索此标签,发现"data-lazy-img"标签后面都是商品图片的图片地址,于是可以设置正则表达式:

pat='data-lazy-img="(.*?)"'

然后再进行:

imagelist=re.compile(pat).findall(data)

6.大图的爬取(之前的图片地址是小图)

先在搜索页面复制一张图片的地址到文本,然后再点进商品,去查看大图,再复制商品图片的地址到文本,进行分析,例如

小图图片地址'''https://img14.360buyimg.com/n7/jfs/t1/112463/24/19126/94054/5f7199a9E0a24e8f5/21931f19ee2f4874.jpg'''大图图片地址'''https://img14.360buyimg.com/n0/jfs/t1/112463/24/19126/94054/5f7199a9E0a24e8f5/21931f19ee2f4874.jpg'''

从上图的地址分析得到只有一处不一样,那就是/n7和/n0,于是需要把爬取出来的字符串中的“/n7”换为"/n0":

b1=imagelist[j].replace('/n7', '/n0')

注意:爬取的图片地址直接是打不开的,需要在前面加个“http:”

newurl="http:"+b1

以下是此程序的完整代码:

import urllib.requestimport rekeyname="AJ"#输入商品名称key=urllib.request.quote(keyname)headers=("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0")opener=urllib.request.build_opener()opener.addheaders=[headers]urllib.request.install_opener(opener)for i in range(1,10):    url="https://search.jd.com/Search?keyword="+key+"&wq="+key+"&page="+str(i*2-1);    data=urllib.request.urlopen(url).read().decode("utf-8","ignore")    pat='data-lazy-img="(.*?)"'    imagelist=re.compile(pat).findall(data)    for j in range(0,len(imagelist)):        b1=imagelist[j].replace('/n7', '/n0')        print("第"+str(i)+"页第"+str(j)+"张爬取成功")        newurl="http:"+b1        file="E:/新建文件夹/AJ/"+"第"+str(i)+"页第"+str(j)+"张"+".jpg"#file指先在指定文件夹里建立相关的文件夹才能爬取成功        urllib.request.urlretrieve(newurl, filename=file)

结语

最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。


本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

最后

以上就是温暖西牛为你收集整理的爬取京东具体商品页面_双十一来临!如何用Python得出京东商品最低价格背景介绍1.导入模块2.商品名称填写区域3.添加报头4.分析商品网页5.正则表达式的确定6.大图的爬取(之前的图片地址是小图)结语的全部内容,希望文章能够帮你解决爬取京东具体商品页面_双十一来临!如何用Python得出京东商品最低价格背景介绍1.导入模块2.商品名称填写区域3.添加报头4.分析商品网页5.正则表达式的确定6.大图的爬取(之前的图片地址是小图)结语所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部