首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我得到TimeoutError:[WinError 10060]当我解析我的学校网站时

我得到TimeoutError:[WinError 10060]当我解析我的学校网站时
EN

Stack Overflow用户
提问于 2015-07-28 06:40:49
回答 2查看 5.7K关注 0票数 1
代码语言:javascript
复制
# -*- coding: UTF-8 -*-

import urllib.request
import re
import os

os.system("cls")

url=input("Url Link : ")

if(url[0:8]=="https://"):
   url=url[:4]+url[5:]

if(url[0:7]!="http://"):
    url="http://"+url

value=urllib.request.urlopen(url).read().decode('UTF8')
par='<title>(.+?)</title>'

result=re.findall(par,value) 
print(result)

这是一个标题解析程序。当解析像Google,Gmail站点时,它工作得很好。当试图解析我的学校网站时,错误出现了。这是学校的问题吗?还是在我的密码里?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-28 11:05:34

使用Python (http://docs.python-requests.org/en/latest/),我能够毫无错误地下载http://jakjeon.icems.kr/main.do,尽管部分文本由于无法安装韩文代码页(949)而被混淆。

下面是脚本:

代码语言:javascript
复制
import requests

url='http://jakjeon.icems.kr/main.do'
r = requests.get(url)
print(r.status_code)
print(r.headers['content-type'])
print(r.encoding)
print(r.text)

运行打印:

代码语言:javascript
复制
200  # r.status_code
text/html; charset=UTF-8 # r.headers['content-type']
UTF-8 # r.encoding

后面跟着页面的所有文本(r.text)

只有在将其代码页设置为65001 (Unicode (UTF-8),请参阅https://msdn.microsoft.com/en-us/library/windows/desktop/dd317756%28v=vs.85%29.aspx)后,才能成功地打印到Windows控制台。

试图将输出重定向到文件会导致UnicodeEncodeError,因为我的平台上的默认文件编码是代码页1252 (ANSI拉丁语1;西欧( Windows ))。下面是试图打印到文件的错误消息:

代码语言:javascript
复制
Traceback (most recent call last):
  File "URLDownloadDemo.py", line 12, in <module>
    print(r.text)
  File "C:\Anaconda3\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 600-601: character maps to <undefined>

然后整个cmd.exe控制台记录在https://goo.gl/Cyav17上可用,脚本的副本在https://goo.gl/W4Sk9S上。

由于将输出重定向到文件时出现编码错误,我增强了脚本,将其输出直接写入使用UTF-8编码的文件。下面是新的脚本:

代码语言:javascript
复制
import requests

url='http://jakjeon.icems.kr/main.do'
r = requests.get(url)
print(r.status_code)
print(r.headers['content-type'])
print(r.encoding)
fout = open('URLDownloadDemo.output.txt', mode='wt', encoding='UTF-8')
fout.write(r.text)
fout.close()

运行此操作非常完美(没有错误),输出文件包含与网页源中相同的韩国字母符号。

新脚本可在https://goo.gl/VJs2Na上使用,其输出文件位于https://goo.gl/4BKe8C

票数 0
EN

Stack Overflow用户

发布于 2015-07-28 07:02:10

可以增加超时时间。

代码:

代码语言:javascript
复制
value=urllib.request.urlopen(url,timeout=60).read().decode('UTF8')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31669040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档