今天是Andy学Python的第54 天哦!
大家好,我是Andy。
今天学习了抓取网页内容。
准备利用Python在凤凰网抓取2021年政府工作报告,并下载到磁盘。
凤凰网2021年政府工作报告原文地址如下:
https://ishare.ifeng.com/c/s/v002idcmztrcYAv9WEf70--BNGVApMI68TcJe9KBvCEaIqsU__.html
01.
网址解析
Python的urllib组件中的urlparse函数,可轻松解析指定网址的内容,在接收返回的ParseResult对象后,即可通过其属性取出网址中各项有用信息。
ParseResult 对象返回属性
scheme:返回scheme通讯协议。
netloc:返回网站名称。
path:返回path路径。
params:返回url查询参数(params)字符串。
query:返回query查询字符串,即GET的参数。
fragment:返回框架名称。
以上5个属性如不存在则返回空字符串。
port:返回通信端口。不存在时返回None
# 解析凤凰网报告网址
from urllib.parse import urlparse
url = 'https://ishare.ifeng.com/c/s/v002idcmztrcYAv9WEf70--BNGVApMI68TcJe9KBvCEaIqsU__.html'
u = urlparse(url)
print(o)
print("scheme = {}".format(u.scheme))
print("netloc = {}".format(u.netloc))
print("path = {}".format(u.path))
print("params = {}".format(u.params))
print("query = {}".format(u.query))
print("fragment = {}".format(u.fragment))
print("port = {}".format(u.port))
02.
用requests 抓取网页源代码
requests 用于抓取网页源代码。
安装 Anaconda 集成开发环境时己安装了 requests 组件,可以直接导入使用。
requests.get()函数接受一个要下载的 URL 字符串,返回一个Response对象(这个名字没搞懂)。
import requests
url = 'https://ishare.ifeng.com/c/s/v002idcmztrcYAv9WEf70--BNGVApMI68TcJe9KBvCEaIqsU__.html'
html= requests.get(url)
print(html.text)
03.
将下载的文件保存到磁盘
使用标准的 open()函数和 write()方法,将 Web 页面保存到硬盘中的一个文件。
注意:必须用“写二进制”模式打开该文件,即向函数传入字符串'wb',作为 open()的第二参数。即使该页面是纯文本的,你也需要写入二进制数据,而不是文本数据,目的是为了保存该文本中的“Unicode” 编码。
下载并保存到文件的完整过程如下:
第1步,调用requests.get()下载该文件。
第2步,用'wb'调用open(),以写二进制的方式打开一个新文件。
第3步,利用Respose对象的iter_content()方法做循环。
第4步,在每次迭代中调用write(),将内容写入该文件。
第5步,调用close()关闭该文件。
# 从凤凰网下载政府工作报告并保存
import requests
res = requests.get('https://ishare.ifeng.com/c/s/v002idcmztrcYAv9WEf70--BNGVApMI68TcJe9KBvCEaIqsU__.html')
report = open('report_2021.txt', 'wb')
for chunk in res.iter_content(100000):
report.write(chunk)
report.close()
51Day Day up!
向上向善,日进一步!
每天学习,努力成长!
定个小目标,开启成长的旅程,遇见更好的自己。
这是我们和自己的约定,许诺自己不负韶华。
路虽远,行则将至;事虽难,做则必成。
成长的最好时机,就是当下。