Day054|网页抓取1

今天是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!

向上向善,日进一步!

每天学习,努力成长!

定个小目标,开启成长的旅程,遇见更好的自己。

这是我们和自己的约定,许诺自己不负韶华。

路虽远,行则将至;事虽难,做则必成。

成长的最好时机,就是当下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章