Craigslist 403 阻止 urlopen 但不是 requests.get
Craigslist 403 Blocking urlopen but NOT requests.get
最近Craigslist.com开始403拦截以下代码。这个好像是不管header还是IP。
import requests
from urllib.request import urlopen, Request
from lxml import etree
url = 'https://sd.craigslist.org/search/sss'
parser = etree.HTMLParser()
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
url_request = Request(url, headers=headers)
webpage = urlopen(url_request,timeout=20).read()
这会输出以下内容:
urllib.error.HTTPError: HTTP Error 403: Forbidden
当我 运行 一个类似的块使用 requests 而不是 urlopen 它工作正常。
import requests
from lxml import html
x=requests.get("https://sd.craigslist.org/search/sss")
tree = html.fromstring(x.content)
print(x.content)
感谢任何帮助。这似乎是一个新问题,因为之前帖子中提出的 none 解决方案似乎已经解决。
我 运行 遇到了与您遇到的完全相同的问题。我在 Scrapy 团队的帮助下解决了这个问题。
如果您进入 settings.py
文件并添加以下内容,问题可能会得到解决:
DOWNLOADER_CLIENT_TLS_METHOD = "TLSv1.2"
然后 运行 再次使用您的抓取工具,这次它应该可以工作了。我仍然不知道为什么这能解决问题,所以如果其他人知道为什么,如果他们能对此有所了解就太好了。
您还可以参考我提出的 this Github issues 以跟踪 Scrapy 团队关于该问题的任何进一步回复。
最近Craigslist.com开始403拦截以下代码。这个好像是不管header还是IP。
import requests
from urllib.request import urlopen, Request
from lxml import etree
url = 'https://sd.craigslist.org/search/sss'
parser = etree.HTMLParser()
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
url_request = Request(url, headers=headers)
webpage = urlopen(url_request,timeout=20).read()
这会输出以下内容:
urllib.error.HTTPError: HTTP Error 403: Forbidden
当我 运行 一个类似的块使用 requests 而不是 urlopen 它工作正常。
import requests
from lxml import html
x=requests.get("https://sd.craigslist.org/search/sss")
tree = html.fromstring(x.content)
print(x.content)
感谢任何帮助。这似乎是一个新问题,因为之前帖子中提出的 none 解决方案似乎已经解决。
我 运行 遇到了与您遇到的完全相同的问题。我在 Scrapy 团队的帮助下解决了这个问题。
如果您进入 settings.py
文件并添加以下内容,问题可能会得到解决:
DOWNLOADER_CLIENT_TLS_METHOD = "TLSv1.2"
然后 运行 再次使用您的抓取工具,这次它应该可以工作了。我仍然不知道为什么这能解决问题,所以如果其他人知道为什么,如果他们能对此有所了解就太好了。
您还可以参考我提出的 this Github issues 以跟踪 Scrapy 团队关于该问题的任何进一步回复。