打算爬一下京东搜索页面的商品列表信息,却发现返回的是个重定向登录页面? 请问这是怎么回事?不登录用 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>"
1
napsterwu 2019-03-03 00:35:32 +08:00 via iPhone
你自己看看一个页面有多少报文头,爬虫是这么好做的?
|
2
bakabie 2019-03-03 00:45:20 +08:00
get 函数中设置一下 headers 报头吧。你好歹也装一下意思意思自己是个用户而不是爬虫呀
|
3
lithiumii 2019-03-03 00:55:04 +08:00 1
不会编 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) |
4
andylsr 2019-03-03 01:06:54 +08:00 via Android
😂😂你好歹加个 headers 啊~不然京东的兄弟多没面子
|
5
Tink 2019-03-03 01:15:55 +08:00 via iPhone
joke
|
6
Oane 2019-03-03 10:24:45 +08:00
加 header 最近刚写完京东爬虫,搜索请求似乎是不会封你的
|
7
joyc OP 谢谢楼上几位兄弟,爬虫新手,请见谅,正确设置 header 后 get 到了信息。
昨天自己设置了 header 了也没有爬出来以为是别的限制问题呢,看来是 header 没设置对, 特别感谢 @lithiumii 分享的这个转换 tool,收藏了,很好用。 |
8
tigerstudent 2019-03-03 15:00:28 +08:00
@Oane 如果要模拟自动下单的请求,好做吗?
|
9
Oane 2019-03-04 09:52:16 +08:00
@tigerstudent 模拟下单没做过只爬数据
|