Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-urllib3接收403';禁止';在抓取网站时_Python_Python 3.x_Urllib_Urllib3 - Fatal编程技术网

Python-urllib3接收403';禁止';在抓取网站时

Python-urllib3接收403';禁止';在抓取网站时,python,python-3.x,urllib,urllib3,Python,Python 3.x,Urllib,Urllib3,我正在使用Python3和urlib3来抓取和下载网站。我抓取了4000个不同域的列表,其中大约有5个域我得到了HttpErrorCode-403-“禁止的” 在我的浏览器上,该网站确实存在并且响应正确。可能这些网站怀疑我是一个爬虫,并禁止我获取数据 这是我的代码: from urllib3 import PoolManager, util, Retry import certifi as certifi from urllib3.exceptions import MaxRetryError

我正在使用
Python3
urlib3
来抓取和下载网站。我抓取了4000个不同域的列表,其中大约有5个域我得到了
HttpErrorCode
-
403-“禁止的”

在我的浏览器上,该网站确实存在并且响应正确。可能这些网站怀疑我是一个爬虫,并禁止我获取数据

这是我的代码:

from urllib3 import PoolManager, util, Retry
import certifi as certifi
from urllib3.exceptions import MaxRetryError

manager = PoolManager(cert_reqs='CERT_REQUIRED',
                               ca_certs=certifi.where(),
                               num_pools=15,
                               maxsize=6,
                               timeout=40.0,
                               retries=Retry(connect=2, read=2, redirect=10))
url_to_download = "https://www.uvision.co.il/"
headers = util.make_headers(accept_encoding='gzip, deflate',
                                keep_alive=True,
                                user_agent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0")
headers['Accept-Language'] = "en-US,en;q=0.5"
headers['Connection'] = 'keep-alive'
headers['Accept'] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
try:
    response = manager.request('GET',
                               url_to_download,
                               preload_content=False,
                               headers=headers)
except MaxRetryError as ex:
    raise FailedToDownload()
拒绝我的网站示例: 和

另一个不工作并抛出
MaxRetryError
的网站是:


我还尝试使用与Firefox完全相同的头文件,但也没有成功。我在这里做错了什么吗?

您指定
keep_alive=True
,这会添加一个标题
连接:keep alive

然后还添加一个标题
连接:keep-alive
(注意大小写的细微差别)。这似乎是问题的根源。要修复它,只需删除冗余线路

headers['Connection'] = 'keep-alive' 

添加了util导入和PoolManager实例。谢谢,删除冗余头修复了前两个链接。你知道如何修复“纽约时报”链接吗。我刚刚发现,要使用这个网站,你必须启用cookies,也许就是这样。我该怎么做?我该怎么做?升级到<代码>请求使用urllib3,但增加了很多友好的功能,比如自动处理cookie和SSL。这是另一个问题。我知道《纽约时报》限制了你每月不必订阅就能阅读的文章数量。自动请求可能会被停止,但是它比普通的urllib3具有更好的cookie处理能力