温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python如何爬取京东的商品排行

发布时间:2021-10-26 09:32:10 来源:亿速云 阅读:166 作者:柒染 栏目:大数据

本篇文章给大家分享的是有关Python如何爬取京东的商品排行,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

确立需求目标

之所以写爬虫,肯定是有需求才会写,不然就没啥意义了。我们今天这个爬虫主要的任务就是,输入一个关键字,然后将京东返回的商品结果按一定的条件取得前十的商品名称和价格。知道了要干什么,就开始上干货吧。我也是一个初学者,不喜勿喷啊。

  • python3

  • urllib库

  • pyquery库

在爬取之前我们得先了解掌握python这个几个库的应用。

实战操作

第一步:

首先,我们先随便搜索一个名字,这里以电脑为例演示。通过连接,我们发现上面的域名链接里面提取到几个关键字,这个也是我们的重点,先拿到第一步的链接。

Python如何爬取京东的商品排行

图中我们可以看到keyword和wq后面的值都是对应我们搜索的名称,那么我们后面肯定用的到,我们下面接着分析,先来抓个包看看,F12相信大家都会用。通过观察,我们发现当我们点击搜索后,它访问的第一个链接就是最上面的链接,参数正是我们输入的关键字,返回结果是一个网页源代码,经过对比正是我们当前的页面代码。

Python如何爬取京东的商品排行

第二步:

通过上面的步骤分析,我们已经确定,京东的网页构造还是相对简单,直接返回网页源码,那我们只需用pyquery这个库的CSS方法提取我们需要的内容就行了。然后我们我们还发现其中的psort参数是代表搜索结果上面的销量,价格这些的。这个当然是我们点了两下试出来的,每个网站的构造都不同,这里不做解释了。下面代码中我写出了不同参数代表不同的规则了。你也可以自己手动点一点,看那个参数是什么。下面就不多说了,代码也是非常简单,大家自己看吧

import urllib.request
import urllib.parse
from pyquery import PyQuery as pq
#转换编码并将链接中字符替换掉
shuru=input('此程序为查询京东商品排行!\n请输入要查询的关键字:\n')
shuru=urllib.parse.quote(shuru)

#选择搜索结果的排序方式
guize=input('请选择结果排序方式用数字0~5代表:\n0代表综合,1代表价格由高到低,2代表价格由低到高,3代表销量,4代表评价数,5代表新品:\n')
guize=int(guize)
if guize == 0:
    psort = ''
elif guize == 1:
    psort = '&psort=1'
elif guize == 2:
    psort = '&psort=2'
elif guize == 3:
    psort = '&psort=3'
elif guize == 4:
    psort = '&psort=4'
elif guize == 5:
    psort = '&psort=5'

print(psort)
headers = {
    'user-agent':' Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400',

}
#链接中psort为商品排行条件,3代表销量,4代表评论数,5代表新品,2代表价格升序,1代表价格降序,综合则没有此参数
url="https://search.jd.com/Search?keyword="+shuru+"&wq="+shuru+psort+"&click=0"
print('查询链接为:%s'%(url))
response=urllib.request.Request(url,headers=headers)
response=urllib.request.urlopen(response)
#上述步骤已经拿到单个网页的源码,后面则进行分析提取有用数据。
#用pyquery库对源码处理,然后利用CSS提取所需的信息
res=pq(response.read().decode('utf-8'))
lis=res('.gl-warp.clearfix .gl-i-wrap').items()
i=1
for li in lis:
    ming=li('.p-name em').text()
    jia=li('.p-price strong i').text()
    print("第 %d 名\n%s"%(i,ming))
    print('价格:¥%s\n\n'%(jia))
    i=i+1
    if i==11:
        break

input('输入任意字符退出')

以上就是Python如何爬取京东的商品排行,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI