所以我正在尝试抓取一个Ubereats页面。url为:https://www.ubereats.com/ann-arbor/food-delivery/chipotle-mexican-grill-3354-washtenaw-ave-ste-a/zbEbQIdWT2-n6iTWqjz55Q
所以我使用的是requests库。我知道这个页面存在,因为我可以访问这个链接。但是该脚本返回一个404错误。在线解决方案说我们应该包括头部,我也没有用。
下面是我的代码:
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)我遗漏了什么或做错了什么?
发布于 2020-05-08 15:34:13
真正的web浏览器在头文件中发送许多不同的值--不仅仅是User-Agent。
许多服务器只检查User-Agent,以便为桌面或移动设备发送正确的超文本标记语言。但一些服务器可能会检查其他标头。
此页面需要标头Accept,但即使没有User-Agent,代码也可以工作
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)来查看从浏览器到服务器的所有请求,以及发送到服务器的所有头部/数据。然后,您可以复制标头并在代码中进行测试。
https://stackoverflow.com/questions/61673305
复制相似问题