Python 3,urlopen - HTTP 错误 403:禁止
Posted
技术标签:
【中文标题】Python 3,urlopen - HTTP 错误 403:禁止【英文标题】:Python 3, urlopen - HTTP Error 403: Forbidden 【发布时间】:2018-05-15 14:44:56 【问题描述】:我正在尝试自动下载出现在 google 图片搜索中的第一张图片,但我无法读取网站源代码并出现错误(“HTTP 错误 403:禁止访问”)。 有任何想法吗?谢谢您的帮助!
这是我的代码:
from urllib.request import urlopen
from bs4 import BeautifulSoup
word = 'house'
r = urlopen('https://www.google.pl/search?&dcr=0&tbm=isch&q='+word)
data = r.read()
【问题讨论】:
也许谷歌不喜欢urlopen()
发送的默认用户代理
可能重复***.com/questions/16627227/…
【参考方案1】:
显然您必须传递 headers
参数,因为该网站阻止您认为您是请求数据的机器人。我在这里找到了一个这样做的例子HTTP error 403 in Python 3 Web Scraping。
另外,urlopen
对象不支持headers
参数,所以我不得不改用Request
对象。
from urllib.request import urlopen, Request
from bs4 import BeautifulSoup
word = 'house'
r = Request('https://www.google.pl/search?&dcr=0&tbm=isch&q='+word, headers='User-Agent': 'Mozilla/5.0')
response = urlopen(r).read()
【讨论】:
谢谢@Alex,它解决了我的问题!现在我可以阅读网站源代码了:)以上是关于Python 3,urlopen - HTTP 错误 403:禁止的主要内容,如果未能解决你的问题,请参考以下文章
python异常处理时报错,提示:HTTPError: HTTP Error 404: Not Found
Python:从 urllib2.urlopen 调用中获取 HTTP 标头?
python urllib2.urlopen(url).read()乱码