【问题标题】:Why does the error occur when parsing http://www.bashinform.ru/?为什么解析http://www.bashinform.ru/时会报错?
【发布时间】:2018-08-01 07:52:37
【问题描述】:

除此之外的所有站点都在解析,但这里有大约 10 秒的延迟,

import urllib.request
from bs4 import BeautifulSoup

def get_html(url):
  response = urllib.request.urlopen(url)
  return response.read()

def main():
  print(get_html('http://bashinform.ru/news/'))


if __name__ == '__main__':
  main()

出现以下错误:

Traceback(最近一次调用最后一次): 文件“D:\Timur\OpenServer\domains\Parser\parser.py”,第 13 行,在 主要的 () 文件“D:\Timur\OpenServer\domains\Parser\parser.py”,第 9 行,在 main 打印(get_html('bashinform.ru/news')) 文件“D:\Timur\OpenServer\domains\Parser\parser.py”,第 5 行,在 get_html 响应 = urllib.request.urlopen (url) 文件“C:\Users\1\AppData\Local\Programs\Python\Python36-32\lib\urllib\request.py”,第 223 行,在 urlopen 返回 opener.open(网址、数据、超时) 文件“C:\Users\1\AppData\Local\Programs\Python\Python36-32\lib\urllib\request.py”,第 526 行,打开 response = self._open (req, data) 文件“C:\Users\1\AppData\Local\Programs\Python\Python36-32\lib\urllib\request.py”,第 544 行,在 _open '_open',请求) 文件“C:\Users\1\AppData\Local\Programs\Python\Python36-32\lib\urllib\request.py”,第 504 行,在 _call_chain 结果 = 函数 (* args) 文件“C:\Users\1\AppData\Local\Programs\Python\Python36-32\lib\urllib\request.py”,第 1346 行,在 http_open 返回 self.do_open (http.client.HTTPConnection, req) 文件“C:\Users\1\AppData\Local\Programs\Python\Python36-32\lib\urllib\request.py”,第 1321 行,在 do_open r = h.getresponse() 文件“C:\Users\1\AppData\Local\Programs\Python\Python36-32\lib\http\client.py”,第 1331 行,在 getresponse 响应.开始() 文件“C:\Users\1\AppData\Local\Programs\Python\Python36-32\lib\http\client.py”,第 297 行,在开始 版本、状态、原因 = self._read_status () 文件“C:\Users\1\AppData\Local\Programs\Python\Python36-32\lib\http\client.py”,第 258 行,_read_status line = str (self.fp.readline (_MAXLINE + 1), "iso-8859-1") 文件“C:\Users\1\AppData\Local\Programs\Python\Python36-32\lib\socket.py”,第 586 行,在 readinto 返回 self._sock.recv_into (b) TimeoutError: [WinError 10060] 尝试连接不成功,因为在要求的时间内从另一台计算机没有收到所需的响应,或者已经建立的连接由于已连接的计算机的错误响应而中断 [19.5s完成]

【问题讨论】:

  • TimeoutError: [WinError 10060] .

标签: python parsing


【解决方案1】:

错误WinError 10060表示您无法成功连接到主机。当我尝试在浏览器中访问该网站时,浏览器会将 www 附加到 url(您的 python 代码不会自动执行此操作)。尝试将网址更改为http://www.bashinform.ru/news/(包括www)。

【讨论】:

  • 同样的错误,还出现了Corporation\PhysX\Common; C:\Windows\system32; C:\视窗; C:\Windows\System32\Wbem; C:\Windows\System32\WindowsPowerShell\v1.0\; C:\Program Files (x86)\Common Files\Acronis\SnapAPI\; C:\程序文件\nodejs\; C:\程序文件\Git\cmd; C:\Users\1\AppData\Local\Programs\Python\Python36-32\Scripts\; C:\Users\1\AppData\Local\Programs\Python\Python36-32\; C:\Users\1\AppData\Local\Microsoft\WindowsApps; C:\Users\1\AppData\Roaming\npm; C:\Users\1\AppData\L...]
【解决方案2】:

你应该使用请求模块

import random
import requests

agents = [
'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko)',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko)']
headers = {"User-Agent":random.choice(agents)}

url = "http://bashinform.ru/news/"
response = requests.get(url,headers=headers)
print(response.text)

'<!doctype html>\n<html lang="ru">\n........

【讨论】:

  • 对不起,我忘了
猜你喜欢
  • 1970-01-01
  • 2017-09-14
  • 1970-01-01
  • 1970-01-01
  • 2018-07-17
  • 1970-01-01
  • 1970-01-01
  • 2022-07-06
  • 1970-01-01
相关资源
最近更新 更多