python請求報錯:raise URLError(err) urllib2.URLError:


問題:

  今天腳本在Linux上執行的時候報錯了。raise URLError(err)
  urllib2.URLError: <urlopen error [Errno -2] Name or service not known>

 

解決:

  1.百度、Google后,沒找到完全匹配的解決方法,但是都提到DNS解析,其中一個說是在/etc/resolv.conf中添加 nameserver  8.8.8.8。

但是,我查看/etc/resolv.conf文件,已經是這樣配置了,當時就排除了這個原因。

  后來換成用python的第三方庫requests去請求,得到更詳細的信息。

看來是重定向請求到‘d。。.com’這個地址的時候,就報錯的。

  然后試着在hosts文件中添加地址對應的ip,然后就能正常請求了。

  2.是,配置、腳本都沒改過,為什么之前沒有修改hosts,都執行得好好的,今天就不行了呢?

帶着這個疑問,又百度了下nameserver,在這篇文章https://blog.csdn.net/u014453898/article/details/62426848中,提到8.8.8.8 這個IP是谷歌公司給出免費的DNS服務器。但由於是外國的,用起來可能會有網速慢的問題。

  然后,我把/etc/resolv.conf 中的nameserver 改成用本地的202.96.134.133,去掉之前配置的hosts,同樣也能請求成功。

  所以,今天腳本不能正常請求的原因是nameserver的配置問題了,用8.8.8.8是國外的dns服務器,網絡問題無法解析請求的域名。

 


免責聲明!

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



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