Python 3,urlopen - HTTP错误403:禁止

3
我想自动下载谷歌图像搜索中出现的第一张图片,但我无法阅读网站源代码并出现了错误(“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()发送的默认用户代理。 - Michael Butscher
可能是重复问题 https://dev59.com/B2Qn5IYBdhLWcg3wtpBW - ababuji
1个回答

7
显然你需要传递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,它解决了我的问题!现在我能够读取网站的源代码 :) - Wojciech

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接