用Python绕过HTTP 403错误的方法

9 浏览
0 Comments

用Python绕过HTTP 403错误的方法

我正在制作一个使用Google进行搜索的程序,但由于HTTP错误403,我无法进行搜索。是否有任何解决方法或其他方法?我正在使用Mechanize进行浏览,以下是我的代码:

from mechanize import Browser
inp = raw_input("输入关键词:")
Word = inp
SEARCH_PAGE = "https://www.google.com/"
browser = Browser()
browser.open(SEARCH_PAGE)
browser.select_form(nr=0)
browser['q'] = Word
browser.submit()

以下是错误信息:

Traceback (most recent call last):
  File "C:\Python27\Project\Auth2.py", line 16, in 
    browser.submit()
  File "C:\Python27\lib\site-packages\mechanize\_mechanize.py", line 541, in submit
    return self.open(self.click(*args, **kwds))
  File "C:\Python27\lib\site-packages\mechanize\_mechanize.py", line 203, in open
    return self._mech_open(url, data, timeout=timeout)
  File "C:\Python27\lib\site-packages\mechanize\_mechanize.py", line 255, in _mech_open
    raise response
httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt

请帮忙,谢谢。

0
0 Comments

在使用Python进行网页爬取时,可能会遇到HTTP 403错误。这个错误通常是由于网站的/robots.txt文件中的限制导致的。机器人协议(Robots Protocol)是一种用来告知网络爬虫哪些页面可以被抓取的协议。在这里,谷歌不希望网络爬虫索引其搜索页面。

然而,我们可以忽略这个限制,方法如下:

browser.set_handle_robots(False)

Web Crawler - Ignore Robots.txt file?中所述。

另外,我建议使用谷歌的自定义搜索API,它提供了一个正式的API,并且结果易于解析。这样可以更好地获取到谷歌搜索的结果。

0
0 Comments

从上述内容可以看出,问题出现的原因是HTTP Error 403: Forbidden。问题的解决方法是修改用户代理(user agent)。具体操作如下:

1. 忽略机器人协议文件(robots.txt):

browser.set_handle_robots(False)

2. 修改用户代理:

需要改变用户代理,可以参考views.scraperwiki.com/run/python_mechanize_cheat_sheet中的内容。

通过以上操作,即可解决HTTP Error 403: Forbidden的问题。

0