【发布时间】:2018-08-03 16:24:48
【问题描述】:
我试图从一个网站获取搜索结果,但是我得到了 “响应 [403]”消息,我发现类似的帖子通过向 request.post 添加标头来解决 403 错误,但它对我的问题不起作用。我应该怎么做才能正确得到我想要的结果?
from urllib.request import urlopen
import urllib.parse
import urllib.request
import requests
from bs4 import BeautifulSoup
url="https://www.metal-archives.com/"
html= urlopen(url)
print("The keyword you entered to search is: %s\n" % 'Bathory')
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
result=requests.post(url, data='Bathory', headers=headers)
print(result.content)
【问题讨论】:
-
如果您尝试使用浏览器访问该网站,您会得到 403 吗?
-
问题不在于标题。这是
data='Bathory'。您是否要搜索该词? -
我怀疑他们只是不想让你发布数据。如果您将脚本重写为获取,它将 200。但是,如果您尝试使用他们的搜索,您需要做的不仅仅是发布。 :)
-
sniperd - 不,它会显示搜索结果,但是在我得到的 html 中找不到结果。我之前确实得到了 200,你知道如果他们不希望我发布数据,有什么解决方法可以得到结果吗? KeyurPotdar - 是的,正是我要搜索的单词,它原本是一个变量,为了方便我这里把它改成一个字符串以便询问。
标签: python web-scraping beautifulsoup python-requests urlopen