前言
授人以魚不如授人以漁,搞清楚爬蟲的各個庫的作用,可以友善後面我們自己在寫爬蟲時可以舉一反三,是以磨刀不誤砍柴工,各位看官修煉屠龍術時,必須要經曆的過程。
環境
python3.7,Requests,BeautifulSoup,json,time
庫介紹
Requests:requests是一個Python第三方庫,用于發起HTTP請求。它可以簡化Python程式中的HTTP通信,并提供了一種更加人性化的方式來處理HTTP請求和響應。
發起get請求
import requests
response = requests.get('https://www.baidu.com/')
print(response.text)
添加請求頭等參數
import requests
headers = {'User-Agent': 'Mozilla/5.0'}
params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('https://www.baidu.com/', headers=headers, params=params)
print(response.text)
發起post請求
import requests
data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://httpbin.org/post', data=data)
print(response.text)
BeautifulSoup:BeautifulSoup是一個Python第三方庫,用于解析HTML和XML文檔。它可以讓使用者在文檔中周遊或搜尋樹形結構,進而擷取所需的資訊,在爬蟲中使用更多的是它搜尋功能。
from bs4 import BeautifulSoup
html_doc = """
<html>
<head>
<title>Test Page</title>
</head>
<body>
<h1>This is a test page.</h1>
<p class="content">This is the content of the test page.</p>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</body>
</html>
"""
soup = BeautifulSoup(html_doc, 'html.parser')
# 搜尋标簽
print(soup.find_all('li'))
# 搜尋屬性
print(soup.find_all(attrs={'class': 'content'}))
# 搜尋文本
print(soup.find_all(text='Item 1'))
json:JSON(JavaScript Object Notation)是一種輕量級的資料交換格式。它以易于閱讀和編寫的文本格式為基礎,用于表示結構化的資料。Python中的json庫提供了将Python對象轉換為JSON格式資料、将JSON格式資料轉換為Python對象的功能。我們在進行爬蟲的時候,經常會請求一些API接口,然後傳回的結果一般都是json字元串,這個時候為了獲得這個字元串裡面的内容,就需要使用這個庫将其轉換為json對象,也就是python裡面的字典資料結構。
import json
json_data = '{"name": "Bob", "age": 20, "gender": "male"}'
data = json.loads(json_data)
print(data)
time:time是Python内置的一個标準庫,用于處理時間相關的操作。它提供了一些函數來擷取、格式化和操作時間。time這個庫很簡單,但是作用卻很大,在爬蟲過程中,主要有兩大功能,第一就是,我們在向伺服器發起請求時,經常會因為操作太頻繁,會被目标伺服器識别為爬蟲所為,這個時候就面臨封号或者封IP的操作,為了解決這個問題,我們就要模拟人為的操作,使用time庫的sleep函數,進行限速控制。第二個作用,就是爬取的時間資料,需要進行格式化。
作用一:
import time
print('Start')
time.sleep(5)
print('End')
作用二:
import time
timestamp = time.time()
local_time = time.localtime(timestamp)
formatted_time = time.strftime('%Y-%m-%d %H:%M:%S', local_time)
print(formatted_time)
好了,各位看官,今天的爬蟲庫就先介紹到這裡,下一篇會根據本篇講解的爬蟲庫,進行實戰——爬取百度地圖的街景資料,如果各位看官有興趣,可以follow一下。