首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >URL返回404的‘'requests’抓取,即使有标题和页面也肯定存在

URL返回404的‘'requests’抓取,即使有标题和页面也肯定存在
EN

Stack Overflow用户
提问于 2020-05-08 14:28:35
回答 1查看 87关注 0票数 1

所以我正在尝试抓取一个Ubereats页面。url为:https://www.ubereats.com/ann-arbor/food-delivery/chipotle-mexican-grill-3354-washtenaw-ave-ste-a/zbEbQIdWT2-n6iTWqjz55Q

所以我使用的是requests库。我知道这个页面存在,因为我可以访问这个链接。但是该脚本返回一个404错误。在线解决方案说我们应该包括头部,我也没有用。

下面是我的代码:

代码语言:javascript
复制
from bs4 import BeautifulSoup
import requests

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:63.0) Gecko/20100101 Firefox/63.0'}
page = requests.get('https://www.ubereats.com/ann-arbor/food-delivery/chipotle-mexican-grill-3354-washtenaw-ave-ste-a/zbEbQIdWT2-n6iTWqjz55Q', headers=headers  )

print(page.content)

我遗漏了什么或做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2020-05-08 15:34:13

真正的web浏览器在头文件中发送许多不同的值--不仅仅是User-Agent

许多服务器只检查User-Agent,以便为桌面或移动设备发送正确的超文本标记语言。但一些服务器可能会检查其他标头。

此页面需要标头Accept,但即使没有User-Agent,代码也可以工作

代码语言:javascript
复制
import requests

headers = {
#    'User-Agent': 'Mozilla/5.0',
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", 
#    "Accept-Encoding": "gzip, deflate, br"
#    "Accept-Language": "en-US;q=0.7,en;q=0.3"
# ... other headers ...
}

url = 'https://www.ubereats.com/ann-arbor/food-delivery/chipotle-mexican-grill-3354-washtenaw-ave-ste-a/zbEbQIdWT2-n6iTWqjz55Q'
page = requests.get(url, headers=headers)

print(page.status_code)
print(page.text) 
#print(page.content)

你可以在火狐/浏览器中使用DevTools (标签Network)来查看从浏览器到服务器的所有请求,以及发送到服务器的所有头部/数据。然后,您可以复制标头并在代码中进行测试。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61673305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档