最新消息:20210917 已从crifan.com换到crifan.org

【已解决】用Python3的urllib下载百度首页源码

Python crifan 394浏览 0评论
折腾:
【未解决】用Python纯内置库无第三方库实现爬虫爬取百度热榜内容列表
期间,先去用python 3的内置库urllib去下载网页源码
python3 urllib
urllib — URL 处理模块 — Python 3.8.5 文档
  • urllib 是一个收集了多个涉及 URL 的模块的包:
    • * urllib.request 打开和读取 URL
    • * urllib.error 包含 urllib.request 抛出的异常
    • * urllib.parse 用于解析 URL
    • * urllib.robotparser 用于解析 robots.txt 文件
HOWTO 使用 urllib 包获取网络资源 — Python 3.8.5 文档
去写代码:
import urllib
baiduResp = urllib.request.urlopen(baiduUrl)
竟然报错:
发生异常: AttributeError
module 'urllib' has no attribute 'request'
urllib — URL handling modules — Python 3.8.5 documentation
cpython/Lib/urllib at 3.8 · python/cpython
感觉是,要换个方式去导入
import urllib.request
baiduResp = urllib.request.urlopen(baiduUrl)
就可以了:
继续调试
去read:
baiduHtml = baiduResp.read()
调试保存出来是:
结果发现read出来的是bytes:
要去解码:
baiduHtmlBytes = baiduResp.read()
baiduHtml = baiduHtmlBytes.decode()
结果:
可以变成string
然后本来以为会和之前requests一样,没有返回完整源码呢。
结果发现不是的,已经返回完整html源码了:
去搜索:百度热榜
也就可以看到最新热榜内容标题了
【总结】
此处用Python内置库urllib去下载百度首页html源码

baiduUrl = "https://www.baidu.com/"

baiduHtmlBytes = baiduResp.read()
baiduHtml = baiduHtmlBytes.decode()
即可。
注:
之前requests,是需要加User-Agent的,才能返回完整网页源码,而此处urllib无需加。

转载请注明:在路上 » 【已解决】用Python3的urllib下载百度首页源码

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
99 queries in 0.191 seconds, using 23.39MB memory