什麼是Python爬蟲?一篇文章帶你全面瞭解爬蟲

博為峰網校發表於2022-02-21

一、什麼叫爬蟲

爬蟲,又名“網路爬蟲”,就是能夠自動訪問網際網路並將網站內容下載下來的程式。它也是搜尋引擎的基礎,像百度和GOOGLE都是憑藉強大的網路爬蟲,來檢索海量的網際網路資訊的然後儲存到雲端,為網友提供優質的搜尋服務的。 加我VX:atstudy-js 回覆“測試”,進入 自動化測試學習交流群~~

二、爬蟲有什麼用

你可能會說,除了做搜尋引擎的公司,學爬蟲有什麼用呢?哈哈,總算有人問到點子上了。打個比方吧:企業A建了個使用者論壇,很多使用者在論壇上留言講自己的使用體驗等等。現在A需要了解使用者需求,分析使用者偏好,為下一輪產品迭代更新做準備。那麼資料如何獲取,當然是需要爬蟲軟體從論壇上獲取咯。所以除了百度、GOOGLE之外,很多企業都在高薪招聘爬蟲工程師。你到任何招聘網站上搜“爬蟲工程師”看看崗位數量和薪資範圍就懂爬蟲有多熱門了。

三、爬蟲的原理

發起請求:通過HTTP協議向目標站點傳送請求(一個request),然後等待目標站點伺服器的響應。

獲取響應內容:如果伺服器能正常響應,會得到一個Response。Response的內容便是所要獲取的頁面內容,響應的內容可能有HTML,Json串,二進位制資料(如圖片視訊)等等。

解析內容:得到的內容可能是HTML,可以用正規表示式、網頁解析庫進行解析;可能是Json,可以直接轉為Json物件解析;可能是二進位制資料,可以做儲存或者進一步的處理。

儲存資料:資料解析完成後,將儲存下來。既可以存為文字文件、可以存到資料庫中。

四、Python爬蟲例項

前面介紹了爬蟲的定義、作用、原理等資訊,相信有不少小夥伴已經開始對爬蟲感興趣了,準備躍躍欲試呢。那現在就來上“乾貨”,直接貼上一段簡單Python爬蟲的程式碼:

1.前期準備工作:安裝Python環境、安裝PYCHARM軟體、安裝MYSQL資料庫、新建資料庫exam、在exam中建一張用於存放爬蟲結果的表格house[SQL語句:create table house(price varchar(88),unit varchar(88),area varchar(88));]

2.爬蟲的目標:爬取鏈家租房網上(url: )首頁中所有連結裡的房源的價格、單位及面積,然後將爬蟲結構存到資料庫中。

3.爬蟲原始碼:如下

import requests #請求URL頁面內容

from bs4 import BeautifulSoup #獲取頁面元素

import pymysql #連結資料庫

import time #時間函式

import lxml #解析庫(支援HTML\XML解析,支援XPATH解析)

#get_page 函式作用:通過requests的get方法得到url連結的內容,再整合成BeautifulSoup可以處理的格式

def get_page(url):

response = requests.get(url)

soup = BeautifulSoup(response.text, 'lxml')

return soup

#get_links 函式的作用:獲取列表頁所有租房連結

def get_links(link_url):

soup = get_page(link_url)

links_div = soup.find_all('div',class_="pic-panel")

links=[div.a.get('href') for div in links_div]

return links

#get_house_info函式作用是:獲取某一個租房頁面的資訊:價格、單位、面積等

def get_house_info(house_url):

soup = get_page(house_url)

price =soup.find('span',class_='total').text

unit = soup.find('span',class_='unit').text.strip()

area = 'test' #這裡area欄位我們自定義一個test做測試

info = {

'價格':price,

'單位':unit,

'面積':area

}

return info

#資料庫的配置資訊寫到字典

DataBase ={

'host': '127.0.0.1',

'database': 'exam',

'user' : 'root',

'password' : 'root',

'charset' :'utf8mb4'}

#連結資料庫

def get_db(setting):

return pymysql.connect(**setting)

#向資料庫插入爬蟲得到的資料

def insert(db,house):

values = "'{}',"*2 + "'{}'"

sql_values = values.format(house['價格'],house['單位'],house['面積'])

sql ="""

insert into house(price,unit,area) values({})

""".format(sql_values)

cursor = db.cursor()

cursor.execute(sql)

db.commit()

#主程式流程:1.連線資料庫 2.得到各個房源資訊的URL列表 3.FOR迴圈從第一個URL開始獲取房源具體資訊(價格等)4.一條一條地插入資料庫

db = get_db(DataBase)

links = get_links('')

for link in links:

time.sleep(2)

house = get_house_info(link)

insert(db,house)

首先,“工欲善其事必先利其器”,用Python寫爬蟲程式也是一樣的道理,寫爬蟲過程中需要匯入各種庫檔案,正是這些及其有用的庫檔案幫我們完成了爬蟲的大部分工作,我們只需要調取相關的藉口函式即可。匯入的格式就是import庫檔名。這裡要注意的是在PYCHARM裡安裝庫檔案,可以通過游標放在庫檔名稱上,同時按ctrl+alt 鍵的方式來安裝,也可以通過命令列(Pip install 庫檔名)的方式安裝,如果安裝失敗或者沒有安裝,那麼後續爬蟲程式肯定會報錯的。在這段程式碼裡,程式前五行都是匯入相關的庫檔案:requests用於請求URL頁面內容;BeautifulSoup用來解析頁面元素;pymysql用於連線資料庫;time包含各種時間函式;lxml是一個解析庫,用於解析HTML、XML格式的檔案,同時它也支援XPATH解析。

其次,我們從程式碼最後的主程式開始看整個爬蟲流程:

通過get_db函式連線資料庫。再深入到get_db函式內部,可以看到是通過呼叫

Pymysql的connect函式來實現資料庫的連線的,這裡**seting是Python收集關鍵字引數的一種方式,我們把資料庫的連線資訊寫到一個字典DataBase裡了,將字典裡的資訊傳給connect做實參。

通過get_links函式,獲取鏈家網租房首頁的所有房源的連結。所有房源的連結以列表形式存在Links裡。get_links函式先通過requests請求得到鏈家網首頁頁面的內容,再通過BeautifuSoup的介面來整理內容的格式,變成它可以處理的格式。最後通過電泳find_all 函式找到所有包含圖片的div樣式,再通過一個for迴圈來獲得所有div樣式裡包含的超連結頁籤(a)的內容(也就是 href 屬性的內容),所有超連結都存放在列表links中。

通過FOR迴圈,來遍歷links中的所有連結(比如其中一個連結是:101101570737.html)

用和2)同樣的方法,通過使用find函式進行元素定位獲得3)中連結裡的價格、單位、面積資訊,將這些資訊寫到一個字典Info裡面。

呼叫insert函式將某一個連結裡得到的Info資訊寫入資料庫的house表中去。深入到insert函式內部,我們可以知道它是通過資料庫的遊標函式cursor()來執行一段SQL語句然後資料庫進行commit操作來實現響應功能。這裡SQL語句的寫法比較特殊,用

到了format函式來進行格式化,這樣做是為了便於函式的複用。

最後,執行一下爬蟲程式碼,可以看到鏈家網的首頁所有房源的資訊都寫入到資料裡了。(注:test是我手動指定的測試字串)

後記:其實Python爬蟲並不難,熟悉整個爬蟲流程之後,就是一些細節問題需要注意,比如如何獲取頁面元素、如何構建SQL語句等等。遇到問題不要慌,看IDE的提示就可以一個個地消滅BUG,最終得到我們預期的結構。

最後:

可以我的 個人V:atstudy-js,可以免費領取一份10G軟體測試工程師面試寶典文件資料。以及相對應的視訊學習教程免費分享!,其中包括了有基礎知識、Linux必備、Mysql資料庫、抓包工具、介面測試工具、測試進階-Python程式設計、Web自動化測試、APP自動化測試、介面自動化測試、測試高階持續整合、測試架構開發測試框架、效能測試等。

這些測試資料,對於做【軟體測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2856737/,如需轉載,請註明出處,否則將追究法律責任。

相關文章