RemoteDisconnected: Remote end closed connection without response的解決方法


 

原文鏈接:

參考鏈接:https://blog.csdn.net/goodnameused/article/details/80246331

參考鏈接:https://blog.csdn.net/u010883226/article/details/80183366


這個問題說的就是我們寫的網絡爬蟲爬取第三方的時候,第三方不願意被爬從而拒絕鏈接,解決這個的思路大概就是偽裝瀏覽器來處理,單也不可避免還是會被拒,暫時只能勤換header的內容

 

 

 

在寫爬蟲的時候遇到了問題,網站是asp.net寫的

1 requests.exceptions.ConnectionError: 
2 ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))

於是就抓包分析,發現只要加了’Accept-Language’就好了。。。

 1 'Accept-Language':'zh-CN,zh;q=0.9' 

 


方法二:

根據各位大神的解釋是UA(User-Agent)出現問題了,

1  headers = {'User-Agent': 'User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}  
2  req = request.Request(url, headers=headers)

 1 html = request.urlopen(req).read() 

 

需要模擬瀏覽器來解決。但是有好多網上的UA都不能用,應該這種UA爬取東西過多,直接被網站記錄了黑名單,需要更改為自己的UA。一般在瀏覽器的地址欄輸入: about:version

獲得本機的UA,然后或者得到不同人的UA,使用random來規避一些網站的反爬措施,

 

如何使用涉及代碼:第16、17、22、35行

 1 import os
 2 import urllib.request
 3 import json
 4 from urllib import request
 5 
 6 import pytest
 7 import requests
 8 from bs4 import BeautifulSoup
 9 import ssl
10 ssl._create_default_https_context = ssl._create_unverified_context
11 #寫入User-Agent,采用字典形式
12 # head={}
13 # head['User-Agent']='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
14 
15 
16 headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '  
17                         'Chrome/51.0.2704.63 Safari/537.36', 'Accept-Language':'zh-CN,zh;q=0.9'}
18 #根據學名搜索頁面
19 def apiSerch(xueming):
20     apiUrl = "https://api.ebird.org/v2/ref/taxon/find?locale=zh_CN&cat=species&limit=150&key=jfekjedvescr&q="+xueming
21     # 調用api 匹配學名
22     resp = requests.get(apiUrl, headers=headers)
23     print(resp.text)
24 
25     # resp = '[{"code": "apubrf1", "name": "Apurimac Brushfinch - Atlapetes forbesi"}]'
26     data = json.loads(resp.text)
27     # print(data2['code'],data2['name'])
28     #如果未查詢到則返回空串
29     if (len(data) == 0):
30         return ''
31     print(data[0]['code'])
32     # 根據學名的code值搜索 獲取目標頁面
33     searchUrl = "https://ebird.org/species/"
34     # 創建headers偽裝瀏覽器
35     shtml = requests.get(searchUrl + data[0]['code'] + "/", headers=headers)
36     #print(shtml.text)
37     return shtml

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM