# -*- 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网站时,它运行良好。当试图解析我的学校网站时出现错误。这是学校的问题吗?或者在我的代码中?
答案 0 :(得分:1)
您可以增加超时
代码:
value=urllib.request.urlopen(url,timeout=60).read().decode('UTF8')
答案 1 :(得分:0)
使用Python请求(http://docs.python-requests.org/en/latest/)我能够无错误地下载http://jakjeon.icems.kr/main.do,尽管由于无法安装Windows的韩语代码页(949)而导致部分文本出现乱码。
这是脚本:
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)
运行它打印:
200 # r.status_code
text/html; charset=UTF-8 # r.headers['content-type']
UTF-8 # r.encoding
后面是页面的所有文本(r.text)
只有在将其代码页设置为65001(Unicode(UTF-8)后,才能成功打印到Windows cmd.exe控制台,请参阅https://msdn.microsoft.com/en-us/library/windows/desktop/dd317756%28v=vs.85%29.aspx)。
尝试将输出重定向到文件会导致UnicodeEncodeError,因为我平台上文件的默认Windows编码是代码页1252(ANSI Latin 1;西欧(Windows))。以下是尝试打印到文件的错误消息:
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>
然后,https://goo.gl/Cyav17提供了整个cmd.exe控制台脚本,脚本副本位于https://goo.gl/W4Sk9S。
由于将输出重定向到文件时出现编码错误,我增强了脚本以将其输出直接写入具有UTF-8编码的文件。这是新脚本:
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。