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!

向上向善,日進一步!

每天學習,努力成長!

定個小目標,開啓成長的旅程,遇見更好的自己。

這是我們和自己的約定,許諾自己不負韶華。

路雖遠,行則將至;事雖難,做則必成。

成長的最好時機,就是當下。

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