requests 请求京东商品搜索页返回登录页面问题

2019-03-03 00:23:56 +08:00
 joyc

打算爬一下京东搜索页面的商品列表信息,却发现返回的是个重定向登录页面? 请问这是怎么回事?不登录用 chrome 是可以看到正常商品列表信息的。 代码 demo 如下:

>>> import requests
>>> url = 'https://search.jd.com/Search?keyword=9787208151550'
>>> html_data = requests.get(url).text
>>> html_data
"<script>window.location.href='https://passport.jd.com/uc/login'</script>"
5258 次点击
所在节点    Python
9 条回复
napsterwu
2019-03-03 00:35:32 +08:00
你自己看看一个页面有多少报文头,爬虫是这么好做的?
bakabie
2019-03-03 00:45:20 +08:00
get 函数中设置一下 headers 报头吧。你好歹也装一下意思意思自己是个用户而不是爬虫呀
lithiumii
2019-03-03 00:55:04 +08:00
不会编 headers 可以先 f12,找到第一个请求右键复制成 cURL,然后去 curl.trillworks.com 转换成 python 或者别的语言。
京东搜索页我记得挺松的,只需要 headers 就可以了,cookie 可以不用,下面的 params 只保留关键词就行。

以下是搜 "1000x" 复制来的例子,cookie 我已经删了
import requests

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.8,zh-CN;q=0.5,zh;q=0.3',
'Referer': 'https://www.jd.com/',
'DNT': '1',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1',
'TE': 'Trailers',
}

params = (
('keyword', '1000x'),
('enc', 'utf-8'),
('wq', '1000x'),
('pvid', '70b2126fcf3246ce9f32710d41799ede'),
)

response = requests.get('https://search.jd.com/Search', headers=headers, params=params)
andylsr
2019-03-03 01:06:54 +08:00
😂😂你好歹加个 headers 啊~不然京东的兄弟多没面子
Tink
2019-03-03 01:15:55 +08:00
joke
Oane
2019-03-03 10:24:45 +08:00
加 header 最近刚写完京东爬虫,搜索请求似乎是不会封你的
joyc
2019-03-03 11:06:50 +08:00
谢谢楼上几位兄弟,爬虫新手,请见谅,正确设置 header 后 get 到了信息。
昨天自己设置了 header 了也没有爬出来以为是别的限制问题呢,看来是 header 没设置对,
特别感谢 @lithiumii 分享的这个转换 tool,收藏了,很好用。
tigerstudent
2019-03-03 15:00:28 +08:00
@Oane 如果要模拟自动下单的请求,好做吗?
Oane
2019-03-04 09:52:16 +08:00
@tigerstudent 模拟下单没做过只爬数据

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/540449

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX