jupyter笔记本中带刮痕的SSLError
我正在使用jupyther笔记本从网页中提取项目。 对于我得到的一些页面,我可以加载页面内容,这是我使用的代码:jupyter笔记本中带刮痕的SSLError,ssl,web-scraping,scrapy,Ssl,Web Scraping,Scrapy,我正在使用jupyther笔记本从网页中提取项目。 对于我得到的一些页面,我可以加载页面内容,这是我使用的代码: import requests from scrapy.http import TextResponse start_url = 'https://www.insulation-expo.com/exhibito...16_72.html?offset=0&az=B&aid=34908&return=MzY6TDJWNGFHbGlhWFJ2TGk0dU1
import requests
from scrapy.http import TextResponse
start_url = 'https://www.insulation-expo.com/exhibito...16_72.html?offset=0&az=B&aid=34908&return=MzY6TDJWNGFHbGlhWFJ2TGk0dU1UWmZOekl1YUhSdGJEOXZabVp6WlhROU1DWmhlajFD#content'
r = requests.get(start_url)
response = TextResponse(r.url, body=r.text, encoding='utf-8')
我得到的错误是:
SSLError: hostname 'www.insulation-expo.com' doesn't match either of 'www.reedexpo.de', 'reedexpo.de'
不过我可以用shell打开页面
scrapy shell 'https://www.insulation-expo.com/exhibito...16_72.html?offset=0&az=B&aid=34908&return=MzY6TDJWNGFHbGlhWFJ2TGk0dU1UWmZOekl1YUhSdGJEOXZabVp6WlhROU1DWmhlajFD#content'
问题是您的客户端没有使用SSL,即在SSL握手中发送目标主机名。这需要在SSL握手中区分相同IP地址上的不同主机,以便服务器能够提供正确的证书。如果没有SNI,SSL客户端将获得此IP地址上
www.reedexpo.de
的证书。通过在使用SNI的SSL握手中包含主机名www.insulation-expo.com
,客户端将获得对此主机名有效的证书
搜索此信息时会出现大量点击,根据这些信息,人们可能会认为该问题应该用scrapy版本1.0.0(2015-06-19)或1.1.0(2016-05-11)修复。因此,请检查您的scrapy版本是否足够新。问题在于您的客户端没有使用,即在SSL握手中发送目标主机名。这需要在SSL握手中区分相同IP地址上的不同主机,以便服务器能够提供正确的证书。如果没有SNI,SSL客户端将获得此IP地址上
www.reedexpo.de
的证书。通过在使用SNI的SSL握手中包含主机名www.insulation-expo.com
,客户端将获得对此主机名有效的证书
搜索此信息时会出现大量点击,根据这些信息,人们可能会认为该问题应该用scrapy版本1.0.0(2015-06-19)或1.1.0(2016-05-11)修复。因此,请检查您的刮擦版是否足够新