一小時入門Python爬蟲,連我都會了!Python爬取租房資料例項
一、什麼叫爬蟲
爬蟲,又名“網路爬蟲”,就是能夠自動訪問網際網路並將網站內容下載下來的程式。它也是搜尋引擎的基礎,像百度和GOOGLE都是憑藉強大的網路爬蟲,來檢索海量的網際網路資訊的然後儲存到雲端,為網友提供優質的搜尋服務的。
二、爬蟲有什麼用
你可能會說,除了做搜尋引擎的公司,學爬蟲有什麼用呢?哈哈,總算有人問到點子上了。打個比方吧:企業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.爬蟲的目標:爬取某租房網上首頁中所有連結裡的房源的價格、單位及面積,然後將爬蟲結構存到資料庫中。
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 中的所有連結(比如其中一個連結是:)
用和 2)同樣的方法,透過使用 find 函式進行元素定位獲得 3)中連結裡的價格、單位、面積資訊,將這些資訊寫到一個字典 Info 裡面。
呼叫 insert 函式將某一個連結裡得到的 Info 資訊寫入資料庫的 house 表中去。深入到 insert 函式內部,我們可以知道它是透過資料庫的遊標函式 cursor()來執行一段 SQL語句然後資料庫進行 commit 操作來實現響應功能。這裡 SQL 語句的寫法比較特殊,用到了 format 函式來進行格式化,這樣做是為了便於函式的複用。
最後,執行一下爬蟲程式碼,可以看到鏈家網的首頁所有房源的資訊都寫入到資料裡了。(注:test 是我手動指定的測試字串)
後記:其實 Python 爬蟲並不難,熟悉整個爬蟲流程之後,就是一些細節問題需要注意,比如如何獲取頁面元素、如何構建 SQL 語句等等。遇到問題不要慌,看 IDE 的提示就可以一個個地消滅 BUG,最終得到我們預期的結構。
加我VX:ww-51testing 回覆關鍵詞“測試”領取限量軟體測試學習資料哦~~
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2652623/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python爬蟲--爬取鏈家租房資訊Python爬蟲
- Python爬蟲入門【3】:美空網資料爬取Python爬蟲
- python例項,python網路爬蟲爬取大學排名!Python爬蟲
- python 爬蟲 實現增量去重和定時爬取例項Python爬蟲
- python爬取北京租房資訊Python
- Python爬蟲入門【5】:27270圖片爬取Python爬蟲
- Python爬蟲入門教程 50-100 Python3爬蟲爬取VIP視訊-Python爬蟲6操作Python爬蟲
- 爬蟲實戰——58同城租房資料爬取爬蟲
- Python爬蟲入門Python爬蟲
- Python爬蟲例項:爬取貓眼電影——破解字型反爬Python爬蟲
- Python爬蟲教程-17-ajax爬取例項(豆瓣電影)Python爬蟲
- 什麼是Python爬蟲?python爬蟲入門難嗎?Python爬蟲
- python-爬蟲入門Python爬蟲
- Python爬蟲入門【9】:圖蟲網多執行緒爬取Python爬蟲執行緒
- Python爬蟲入門【11】:半次元COS圖爬取Python爬蟲
- 【爬蟲】python爬蟲從入門到放棄爬蟲Python
- Python爬蟲專案100例,附原始碼!100個Python爬蟲練手例項Python爬蟲原始碼
- 不會Python爬蟲?教你一個通用爬蟲思路輕鬆爬取網頁資料Python爬蟲網頁
- 爬蟲入門基礎-Python爬蟲Python
- python3 爬蟲入門Python爬蟲
- 為什麼學習python及爬蟲,Python爬蟲[入門篇]?Python爬蟲
- Python爬蟲入門【4】:美空網未登入圖片爬取Python爬蟲
- python爬蟲獲取天氣網實時資料Python爬蟲
- 用python爬取鏈家的租房資訊Python
- python爬蟲抓取資料時失敗_python爬蟲 大佬 請教下 為什麼爬取的資料有時能爬到 有時有爬不到, 程式碼如下:...Python爬蟲
- Python爬蟲入門教程 2-100 妹子圖網站爬取Python爬蟲網站
- Python爬蟲入門【10】:電子書多執行緒爬取Python爬蟲執行緒
- 不踩坑的Python爬蟲:Python爬蟲開發與專案實戰,從爬蟲入門 PythonPython爬蟲
- python爬蟲總是爬不到資料,你需要解決反爬蟲了Python爬蟲
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- python爬蟲——爬取大學排名資訊Python爬蟲
- Python爬蟲入門,8個常用爬蟲技巧盤點Python爬蟲
- python爬蟲例項專案大全-GitHub 上有哪些優秀的 Python 爬蟲專案?Python爬蟲Github
- Python爬蟲框架:scrapy爬取高考派大學資料Python爬蟲框架
- 輕鬆利用Python爬蟲爬取你想要的資料Python爬蟲
- python爬蟲 之 BeautifulSoup庫入門Python爬蟲
- Python3爬蟲入門(一)Python爬蟲
- 房產資料爬取、智慧財產權資料爬取、企業工商資料爬取、抖音直播間資料python爬蟲爬取Python爬蟲