Pythonクローラーがティーチングを要求する(5):一般的な例外処理

Webページの文字化けしたテキスト

コードが文字化けする理由は、デコード中にWebページをエンコードする方法が設定されていないためです。

response.encoding = response.apparent_encoding

Pythonクローラー、データ分析、Webサイト開発、その他のケースチュートリアルビデオはオンラインで無料で視聴できます

https://space.bilibili.com/523606542 

Python学習交換グループ:1039645993

ヘッダーパラメータをリクエストする

InvalidHeader:ヘッダーの戻り文字または先頭のスペースが無効です:User-Agent

import requests

headers = {
  'User-Agent': ' Mozilla/5.0 (windows NT 10.0; wow64) Applewebkit/537.36(KHTML,like Gecko) chrome/84.0.4128.3 safari/537.36'
}
response = requests.get( ' http: //www.shuquge.com/txt/8659/index.htm1 ' ,
headers=headers)
response.encoding = response.apparent_encoding
html = response.text
print(htm7)

実際、どこに問題があるのか​​を見つけるのは難しいですが、実際には「Mozilla」の前に余分なスペースがあるため、スペースを削除するだけです

データとパラメータのエラーはありません

import requests

headers = {
  'Host' : 'www.guazi. com ' ,
  'User-Agent ': 'Mozi11a/5.0 (windows NT 10.0; wOw64) ApplewebKit/537.36(KHTML,like Gecko) chrome/84.0.4128.3 safari/537.36',
}
response = requests.get( ' https: //www.guazi.com/cs/20e17311773b1706x.htm',
headers=headers)
response.encoding = response.apparent_encoding
print(response.text)

要求されたデータが期待されたデータと異なります。この時点で、一部のパラメータに問題があるはずです。パラメータが欠落していないか、間違ったパラメータが指定されていないかを確認してください。

ターゲットコンピュータは積極的に拒否します

import requests

proxy_response = requests.get( 'http://134.175.188.27:5010/get')
proxy = proxy_response.json()
print(proxy)

エラー

requests.exceptions.ConnectionError: 
HTTPConnectionPoo1(host='134.175.188.27',port=5010): 
Max retries exceeded with url: /get (caused byNewConnectionError( ' <ur1lib3.connection.HTTPConnection object at Ox0000023AB83AC828>: Failed to establish a new connection: [winError 10061]由于目标计算机积极拒绝,无法连接。',))
  • 認識される
  • URLが正しく入力されていません
  • サーバーはサーバーの提供を停止しました

リンクタイムアウト

import requests

proxy_response = requests.get( ' http://134.175.188.27:5010/get', timeout=0.0001)
proxy = proxy_response.json(
print(proxy)

エラー

requests.exceptions.connectTimeout: 
HTTPConnectionPoo1(host='134.175.188.27'port=5010): 
Max retries exceeded with ur1: /get (caused byconnectTimeoutError(<ur1lib3.connection.HTTPConnection object at ox000002045EF9B8DO>,'Connection to 134.175.188.27 timed out.(connecttimeout=O.0001) '))

例外処理

import requests

try :
  proxy_response = requests.get( 'http:/ /134.175.188.27:5010/get',timeout=O.0001)
  proxy = proxy_response.json()
  print(proxy)
except:
  pass

おすすめ

転載: blog.csdn.net/m0_48405781/article/details/115249380