关于python:解析http://www.bashinform.ru/时为什么会出错?

Why does the error occur when parsing http://www.bashinform.ru/?

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

1
2
3
4
5
6
7
8
9
10
11
12
13
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()

发生以下错误:

回溯(最近一次最后一次通话):
文件"D: Timur OpenServer domains Parser parser.py",第13行,in
main()
在主文件中输入文件"D: Timur OpenServer domains Parser parser.py",第9行
print(get_html('bashinform.ru/news'))
get_html中的文件"D: Timur OpenServer domains Parser parser.py",第5行
response = urllib.request.urlopen(url)
文件"C: Users 1 AppData Local Programs Python Python36-32 lib urllib request.py",第223行,在urlopen中
return opener.open(url,data,timeout)
文件"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',req)
文件"C: Users 1 AppData Local Programs Python Python36-32 lib urllib request.py",第504行,在_call_chain中
result = func(* args)
在http_open中输入文件"C: Users 1 AppData Local Programs Python Python36-32 lib urllib request.py",第1346行
return self.do_open(http.client.HTTPConnection,req)
do_open中的文件"C: Users 1 AppData Local Programs Python Python36-32 lib urllib request.py",第1321行
r = h.getresponse()
在getresponse中的文件"C: Users 1 AppData Local Programs Python Python36-32 lib http client.py",第1331行
response.begin()
文件"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中
return self._sock.recv_into(b)
TimeoutError:[WinError 10060]尝试连接失败,因为从另一台计算机上所需的时间没有收到所需的响应,或者已经建立的连接因为已连接的计算机的错误响应而中断
[19.5年代完成]


您应该使用请求模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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>
<html lang="ru">
........


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