运行爬虫时报错如下:
TCP connection timed out: 10060: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
原因:你的代理IP过期或者代理IP有问题,导致request.meta[‘proxy’] = random.choice(PROXIES_NEW[http]) 后 request带着这个IP根本无法访问服务器,被挡在外面!(from douban.settings import PROXIES_LIST 这个请根据你自己的文件路径来!)我的错误是因为我只放了IP:112.85.168.96。却忽略了前面的http://以及后面的端口!
解决办法:在scrapy框架里的settings文件先设置好proxy_list
PROXIES_LIST = {
'http':[
'http://112.85.168.96:9999',
'http://1.197.203.234:9999',
'http://120.83.106.228:9999'
],
'https':[
'https://223.241.78.23:808',
'https://112.85.171.126:9999'
]
在middlewares文件里设置RandomProxy类和 import PROXIES_LIST
from douban.settings import PROXIES_LIST
import randomclass RandomProxy(object):
def process_request(self, request, spider):
http = request.url.split('://')[0]
request.meta['proxy'] = random.choice(PROXIES_LIST[http])
在settings文件里开启 donwloader_middlewares 中间件:
DOWNLOADER_MIDDLEWARES = {
# 'douban.middlewares.DoubanDownloaderMiddleware': 543,
'douban.middlewares.RandomProxy': 541
}
最后运行爬虫即可, 我是运行成功了。只是在Windows的pycharm里总是报这个错:UnicodeEncodeError: ‘gbk’ codec can’t encode character xxx
请问有谁知道这个怎么破呀???用Windows编程就是麻烦,不如Linux方便。
【报错|TCP connection timed out: 10060: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。】还有我在爬取的过程中即使成功了也偶尔会报上面的错误:由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。说明免费的代理IP有些是不靠谱的,早就失效了还展示出来,所以最好买要付费的代理IP。
推荐阅读
- keras报错Error when checking target: expected dense_1 to have shape (5,) but got array with shape (1,)
- Python|urllib.error.URLError(urlopen error [WinError 10060])
- imsave函数不能用解决方法
- ImportError: cannot import name 'imsave' from 'scipy.misc' (C:\Users\DELL\AppData\Roaming\Python\Pyt
- 成功解决DLL load failed: 页面文件太小,无法完成操作
- 成功解决RuntimeError: Variable += value not supported. Use variable.assign_add(value) to modify the vari
- Git clone项目失败,提示git did not exit cleanly(exit code 1)的解决办法
- TypeError: 'float' object cannot be interpreted as an integer
- 报错|SMPlayer在ubuntu16.04下没有声音的解决办法| mysql无法修改