天天看點

爬蟲——第二篇Requests庫

作者:不在迷茫0016
爬蟲——第二篇Requests庫
爬蟲——第二篇Requests庫

前言

授人以魚不如授人以漁,搞清楚爬蟲的各個庫的作用,可以友善後面我們自己在寫爬蟲時可以舉一反三,是以磨刀不誤砍柴工,各位看官修煉屠龍術時,必須要經曆的過程。

環境

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一下。

繼續閱讀