我正在尝试使用请求和BeautifulSoup抓取网站。当我运行代码以获取网页的标签时,汤对象为空白。我打印了请求对象,以查看请求是否成功,但是否成功。打印的结果显示响应447。我找不到447作为HTTP状态代码的含义。有谁知道我如何成功连接并刮取网站?
代码:
r = requests.get('https://foobar)
soup = BeautifulSoup(r.text, 'html.parser')
print(soup.get_text())
Output:
''
当我打印请求对象时:
print(r)
Output:
<Response [447]>
答案 0 :(得分:3)
该站点很可能会确认您的活动,因此它阻止了您的访问,您可以通过在请求站点中包含标头来解决此问题。
import bs4
import requests
session=requests.session()
headers={"User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0","Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"}
req=session.get(url,headers=headers)
soup=bs4.BeautifulSoup(req.text)
答案 1 :(得分:1)
听起来好像它们具有浏览器检测软件,但是不喜欢您的浏览器。 (这意味着他们不喜欢您缺少浏览器)
虽然447不是http的标准错误状态,但有时由于太多请求而在smtp中使用。
在不知道您正在浏览哪个特定网站的情况下,不可能有人能为您提供更多信息。您只需要添加标题即可。