【问题标题】:Web Crawler HTTP Error 403:Forbidden网络爬虫 HTTP 错误 403:禁止
【发布时间】:2012-12-21 09:39:26
【问题描述】:

我是一个新手,想写一个网络蜘蛛的脚本。 我想转到一个页面,在文本框中输入数据,通过单击提交按钮转到下一页并检索新页面上的所有数据,迭代

以下是我正在尝试的代码:

import urllib
import urllib2
import string
import sys
from BeautifulSoup import BeautifulSoup

hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3','Accept-Encoding': 'none','Accept-Language': 'en-US,en;q=0.8','Connection': 'keep-alive'}
values = {'query' : '5ed10c844ed4266a18d34e2ba06b381a' }
data = urllib.urlencode(values)
request = urllib2.Request("https://www.virustotal.com/#search", data, headers=hdr)
response = urllib2.urlopen(request)
the_page = response.read()
pool = BeautifulSoup(the_page)

print pool

以下是错误:

Traceback (most recent call last):
File "C:\Users\Dipanshu\Desktop\webscraping_demo.py", line 19, in <module>
response = urllib2.urlopen(request)
File "C:\Python27\lib\urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "C:\Python27\lib\urllib2.py", line 406, in open
response = meth(req, response)
File "C:\Python27\lib\urllib2.py", line 519, in http_response
'http', request, response, code, msg, hdrs)
File "C:\Python27\lib\urllib2.py", line 444, in error
return self._call_chain(*args)
File "C:\Python27\lib\urllib2.py", line 378, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 527, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 403: Forbidden

我该如何解决这个问题?

【问题讨论】:

标签: python web-crawler http-error


【解决方案1】:
from bs4 import BeautifulSoup
import urllib.request

user_agent = 'Mozilla/5.0'
headers = {'User-Agent': user_agent }
target_url = 'https://www.google.co.kr/search?q=cat&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjtrZCg7uXbAhVaUd4KHc2HDgIQ_AUICygC&biw=1375&bih=842'

request = urllib.request.Request( url=target_url, headers=headers )
req = urllib.request.urlopen(request)
soup = BeautifulSoup(req.read(), 'html.parser')

target_url : 谷歌搜索网页“猫”

"headers" 将帮助您完成 Forbidden 错误。 这段代码

【讨论】:

    【解决方案2】:

    据我了解,您的 request 参数设置不正确,并且(可能)将您的蜘蛛驱动到您不应该查看的页面。

    This user had a similar problem, but fixed it by modifying the headers.

    【讨论】:

    • 我已经添加了该帖子中指定的所有标题,但仍然无效!
    • @Dipanshu 我认为您不必添加该帖子中指定的标题,因为他试图打开不同的站点。您必须自定义现有的request 及其参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    相关资源
    最近更新 更多