|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
2. 写一个程序,依次访问文件中指定的站点,并将每个站点返回的内容依次存放到不同的文件中。
答案如下:
—————————————————————————————————————————————————————
import urllib.request
import chardet
def main():
i = 0
with open("urls.txt", "r") as f:
# 读取待访问的网址
# 由于urls.txt每一行一个URL
# 所以按换行符'\n'分割
urls = f.read().splitlines()
for each_url in urls:
response = urllib.request.urlopen(each_url)
html = response.read()
# 识别网页编码
encode = chardet.detect(html)['encoding']
if encode == 'GB2312':
encode = 'GBK'
i += 1
filename = "url_%d.txt" % i
with open(filename, "w", encoding=encode) as each_file:
each_file.write(html.decode(encode, "ignore"))
if __name__ == "__main__":
main()
—————————————————————————————————————————————————————
运行结果如下:
Traceback (most recent call last):
File "C:/Programs/Python/text/053-3.py", line 28, in <module>
main()
File "C:/Programs/Python/text/053-3.py", line 13, in main
response = urllib.request.urlopen(each_url)
File "C:\Programs\Python\Python37\lib\urllib\request.py", line 222, in urlopen
return opener.open(url, data, timeout)
File "C:\Programs\Python\Python37\lib\urllib\request.py", line 510, in open
req = Request(fullurl, data)
File "C:\Programs\Python\Python37\lib\urllib\request.py", line 328, in __init__
self.full_url = url
File "C:\Programs\Python\Python37\lib\urllib\request.py", line 354, in full_url
self._parse()
File "C:\Programs\Python\Python37\lib\urllib\request.py", line 383, in _parse
raise ValueError("unknown url type: %r" % self.full_url)
ValueError: unknown url type: ''
—————————————————————————————————————————————————————
程序上共有两处报错:
上例中 蓝色 和 绿色 两处。
不明白这两处都是什么问题,
main()——只是调用了之前定义的函数
response = urllib.request.urlopen(each_url)——这是访问打开的链接吧
你可以尝试打印下urls
里面有一个url是空的,无法访问,故报错
|
|