鱼C论坛

 找回密码
 立即注册
查看: 1402|回复: 2

[已解决]第053讲:论一只爬虫的自我修养 第三题

[复制链接]
发表于 2019-8-8 23:27:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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)——这是访问打开的链接吧
最佳答案
2019-8-9 06:47:18
你可以尝试打印下urls
里面有一个url是空的,无法访问,故报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-9 06:47:18 | 显示全部楼层    本楼为最佳答案   
你可以尝试打印下urls
里面有一个url是空的,无法访问,故报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-8 22:28:12 | 显示全部楼层
新手·ing 发表于 2019-8-9 06:47
你可以尝试打印下urls
里面有一个url是空的,无法访问,故报错

emmm,我打印urls没有空的,列表里面5个网址元素,能说的更详细点吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 20:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表