python3 爬蟲第一步 簡單獲取網頁基本信息

注:本系列專欄需要有簡單的python3 語言基礎
爬蟲的相關作用在此就不再說明,相信能夠點進該系列文章的讀者都已經瞭解了爬蟲是什麼,並且能夠做什麼。由於是發佈在互聯網的文章,所以系列文章都不以書籍的方式從頭到尾的敘述作用及其一些簡介。文章將快速的進入爬蟲的開發講解。

開始

爬蟲一般的實現流程如下:
在這裏插入圖片描述
首先向一個 Url 地址發送請求,隨後遠端服務器將會返回整個網頁。常規情況下,當我們使用瀏覽器訪問網站也是這麼一個流程;用戶在瀏覽器輸入一個地址,瀏覽器將會發送一個服務器請求,服務器返回請求的內容,隨後瀏覽器解析內容。
其次,發送請求後,將會得到整個網頁的內容。
最後,通過我們的需求去解析整個網頁,通過正則或其它方式獲取需要的數據。

發送請求 獲取網頁

一般情況下發送請求和獲取網頁是相互實現的,通過請求後就會得到網頁數據。
我們使用requests 庫進行web的請求。
代碼編寫如下:

import requests

url="https://www.baidu.com/"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36'}
html=requests.get(url,headers=headers)
print(html.text)
  • import requests:引入 requests 模塊
  • url="https://www.baidu.com/":設置要請求的url值,這裏爲百度
  • headers:爲了更好的僞造自己是瀏覽器訪問的,需要加一個頭,讓自己看起來是通過瀏覽器訪問
  • html=requests.get(url,headers=headers):requests使用get方法,請求網站爲url設置的值,頭部爲headers
  • print(html.text):顯示返回的值html中的text文本,text文本則爲網頁的源代碼

解析網頁

接下來需要使用一個庫 BeautifulSoup庫,BeautifulSoup 是靈活方便的網頁解析庫,使用bs4(BeautifulSoup )可以快速的使我們獲取網頁中的一般信息。例如我們需要獲取剛剛得到網頁源碼中的title標題,首先引入 bs庫:

from bs4 import BeautifulSoup

隨後使用 beautifulsoup 進行解析,html.parser 代表html的解析器,可以解析html代碼;其中 html.text 爲網頁源碼爲html,如下:

val = BeautifulSoup(html.text, 'html.parser')

解析完成後,如果想獲取標題值,則直接使用 .title 進行獲取:

print(val.title)

運行結果如下:
在這裏插入圖片描述
完整代碼如下:

import requests
from bs4 import BeautifulSoup

url="https://www.baidu.com/"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36'}
html=requests.get(url,headers=headers)
val = BeautifulSoup(html.text, 'html.parser')
print(val.title)

如果想進行抓取文件的保存,可以如下方式編寫代碼:

f = open(r'D:\html.html',mode='w')
f.write(html.text)
f.close() 

以上代碼將網頁的源代碼保存至D盤根目錄下,完整代碼如下:

import requests
from bs4 import BeautifulSoup

url="https://www.baidu.com/"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36'}
html=requests.get(url,headers=headers)
val = BeautifulSoup(html.text, 'html.parser')
print(val.title)
f = open(r'D:\html.html',mode='w')
f.write(html.text)
f.close() 

以上代碼可能會出現編碼不一致,出現“亂碼”的情況,可以通過以下方式解決:

f = open(r'D:\html.html',mode='w',encoding="utf-8")

在open函數中,添加編碼爲 utf-8 即可。最終打開保存的文件如下:
在這裏插入圖片描述
由於有些資源是動態加載,獲取的鏈接有時效性,所以並沒有顯示。

這樣最簡單的一個爬蟲就解決了,下一篇將繼續深入瞭解爬蟲。

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