爬虫 京东(一)

2019-02-16  本文已影响0人  煎炼

说一下京东,作为主流的电商网站,里面的商品还是很齐全的,而且京东也很友好,希望看到这篇文章的小伙伴注意下自己的访问频率,善待京东服务器。

下面开始进入正题  。

https://search.jd.com/Search?keyword=%E5%A5%B3%E8%A3%85&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E5%A5%B3%E8%A3%85&cid2=1343&page=1&s=1&click=0

以这个网页为例。

下一页的链接还是很容易就能找到规律的。

page=页码数*2-1,s=(页码数-1)*60+1

这里就不详细说明了,这次主要说如何获取一页的全部商品。

前面的三十个商品可以请求当前链接获得

import requests

headers = {

"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"

}

url ="https://search.jd.com/Search?keyword=%E5%A5%B3%E8%A3%85&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E5%A5%B3%E8%A3%85&cid2=1343&page=1&s=1&click=0"

response = requests.get(url, headers=headers)

后面的三十个链接就需要另外请求才能获得

首先打开开发者模式,将开发者模式里面的数据清空,然后选到js上面

1-1

然后向下滚动滚动条,当滚动条滚动到下面的商品的时候就会更新出来几条数据

1-2

这里面的数据就是我们需要的后三十条数据了。

链接看起来很长,其实可以简化的

show_items可以删掉了,tpl也可以删掉,其他的保留

然后就成这样了

https://search.jd.com/s_new.php?keyword=%E5%A5%B3%E8%A3%85&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E5%A5%B3%E8%A3%85&cid2=1343&page=2&s=27&scrolling=y&log_id=1550313966.86235

然后我们直接请求是得不到我们想要的数据的

1-3

因为我们的请求头缺少参数,需要添加参数,网页会判断这个请求是从哪个链接发送的

headers = {

"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36",

"referer": url,

}

从而返回相应数据

1-4

后三十条数据已经获取到了

商品数量的控制仍然是page和s,下面放上代码

import requests

url ="https://search.jd.com/Search?keyword=%E5%A5%B3%E8%A3%85&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E5%A5%B3%E8%A3%85&cid2=1343&page=1&s=1&click=0"

# headers = {

#    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36",

# }

# response = requests.get(url, headers=headers).content.decode("utf8")

# print(response)

headers = {

"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36",

    "referer": url

}

url1 ="https://search.jd.com/s_new.php?keyword=%E5%A5%B3%E8%A3%85&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E5%A5%B3%E8%A3%85&cid2=1343&page=2&s=27&scrolling=y&log_id=1550313966.86235"

response = requests.get(url1, headers=headers).content.decode("utf8")

print(response)

上一篇 下一篇

猜你喜欢

热点阅读