'一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例'

"

一、什麼叫爬蟲

爬蟲,又名"網絡爬蟲",就是能夠自動訪問互聯網並將網站內容下載下來的程序。它也是搜索引擎的基礎,像百度和GOOGLE都是憑藉強大的網絡爬蟲,來檢索海量的互聯網信息的然後存儲到雲端,為網友提供優質的搜索服務的。

二、爬蟲有什麼用

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

"

一、什麼叫爬蟲

爬蟲,又名"網絡爬蟲",就是能夠自動訪問互聯網並將網站內容下載下來的程序。它也是搜索引擎的基礎,像百度和GOOGLE都是憑藉強大的網絡爬蟲,來檢索海量的互聯網信息的然後存儲到雲端,為網友提供優質的搜索服務的。

二、爬蟲有什麼用

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

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

三、爬蟲的原理

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

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

解析內容:得到的內容可能是HTML,可以用正則表達式、網頁解析庫進行解析;可能是Json,可以直接轉為Json對象解析;可能是二進制數據,可以做保存或者進一步的處理。

保存數據:數據解析完成後,將保存下來。既可以存為文本文檔、可以存到數據庫中。

"

一、什麼叫爬蟲

爬蟲,又名"網絡爬蟲",就是能夠自動訪問互聯網並將網站內容下載下來的程序。它也是搜索引擎的基礎,像百度和GOOGLE都是憑藉強大的網絡爬蟲,來檢索海量的互聯網信息的然後存儲到雲端,為網友提供優質的搜索服務的。

二、爬蟲有什麼用

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

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

三、爬蟲的原理

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

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

解析內容:得到的內容可能是HTML,可以用正則表達式、網頁解析庫進行解析;可能是Json,可以直接轉為Json對象解析;可能是二進制數據,可以做保存或者進一步的處理。

保存數據:數據解析完成後,將保存下來。既可以存為文本文檔、可以存到數據庫中。

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

四、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('https://bj.lianjia.com/zufang/')

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 解析。

"

一、什麼叫爬蟲

爬蟲,又名"網絡爬蟲",就是能夠自動訪問互聯網並將網站內容下載下來的程序。它也是搜索引擎的基礎,像百度和GOOGLE都是憑藉強大的網絡爬蟲,來檢索海量的互聯網信息的然後存儲到雲端,為網友提供優質的搜索服務的。

二、爬蟲有什麼用

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

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

三、爬蟲的原理

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

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

解析內容:得到的內容可能是HTML,可以用正則表達式、網頁解析庫進行解析;可能是Json,可以直接轉為Json對象解析;可能是二進制數據,可以做保存或者進一步的處理。

保存數據:數據解析完成後,將保存下來。既可以存為文本文檔、可以存到數據庫中。

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

四、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('https://bj.lianjia.com/zufang/')

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 解析。

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

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

通過 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 中。

"

一、什麼叫爬蟲

爬蟲,又名"網絡爬蟲",就是能夠自動訪問互聯網並將網站內容下載下來的程序。它也是搜索引擎的基礎,像百度和GOOGLE都是憑藉強大的網絡爬蟲,來檢索海量的互聯網信息的然後存儲到雲端,為網友提供優質的搜索服務的。

二、爬蟲有什麼用

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

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

三、爬蟲的原理

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

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

解析內容:得到的內容可能是HTML,可以用正則表達式、網頁解析庫進行解析;可能是Json,可以直接轉為Json對象解析;可能是二進制數據,可以做保存或者進一步的處理。

保存數據:數據解析完成後,將保存下來。既可以存為文本文檔、可以存到數據庫中。

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

四、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('https://bj.lianjia.com/zufang/')

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 解析。

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

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

通過 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 中。

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

通過 FOR 循環,來遍歷 links 中的所有鏈接(比如其中一個鏈接是:https://bj.lianjia.com/zufang/101101570737.html)

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

調用 insert 函數將某一個鏈接裡得到的 Info 信息寫入數據庫的 house 表中去。深入到 insert 函數內部,我們可以知道它是通過數據庫的遊標函數 cursor()來執行一段 SQL語句然後數據庫進行 commit 操作來實現響應功能。這裡 SQL 語句的寫法比較特殊,用到了 format 函數來進行格式化,這樣做是為了便於函數的複用。

最後,運行一下爬蟲代碼,可以看到鏈家網的首頁所有房源的信息都寫入到數據裡了。(注:test 是我手動指定的測試字符串)

"

一、什麼叫爬蟲

爬蟲,又名"網絡爬蟲",就是能夠自動訪問互聯網並將網站內容下載下來的程序。它也是搜索引擎的基礎,像百度和GOOGLE都是憑藉強大的網絡爬蟲,來檢索海量的互聯網信息的然後存儲到雲端,為網友提供優質的搜索服務的。

二、爬蟲有什麼用

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

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

三、爬蟲的原理

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

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

解析內容:得到的內容可能是HTML,可以用正則表達式、網頁解析庫進行解析;可能是Json,可以直接轉為Json對象解析;可能是二進制數據,可以做保存或者進一步的處理。

保存數據:數據解析完成後,將保存下來。既可以存為文本文檔、可以存到數據庫中。

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

四、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('https://bj.lianjia.com/zufang/')

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 解析。

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

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

通過 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 中。

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

通過 FOR 循環,來遍歷 links 中的所有鏈接(比如其中一個鏈接是:https://bj.lianjia.com/zufang/101101570737.html)

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

調用 insert 函數將某一個鏈接裡得到的 Info 信息寫入數據庫的 house 表中去。深入到 insert 函數內部,我們可以知道它是通過數據庫的遊標函數 cursor()來執行一段 SQL語句然後數據庫進行 commit 操作來實現響應功能。這裡 SQL 語句的寫法比較特殊,用到了 format 函數來進行格式化,這樣做是為了便於函數的複用。

最後,運行一下爬蟲代碼,可以看到鏈家網的首頁所有房源的信息都寫入到數據裡了。(注:test 是我手動指定的測試字符串)

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

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

請關注+私信回覆:“學習”就可以免費拿到軟件測試學習資料

"

一、什麼叫爬蟲

爬蟲,又名"網絡爬蟲",就是能夠自動訪問互聯網並將網站內容下載下來的程序。它也是搜索引擎的基礎,像百度和GOOGLE都是憑藉強大的網絡爬蟲,來檢索海量的互聯網信息的然後存儲到雲端,為網友提供優質的搜索服務的。

二、爬蟲有什麼用

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

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

三、爬蟲的原理

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

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

解析內容:得到的內容可能是HTML,可以用正則表達式、網頁解析庫進行解析;可能是Json,可以直接轉為Json對象解析;可能是二進制數據,可以做保存或者進一步的處理。

保存數據:數據解析完成後,將保存下來。既可以存為文本文檔、可以存到數據庫中。

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

四、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('https://bj.lianjia.com/zufang/')

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 解析。

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

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

通過 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 中。

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

通過 FOR 循環,來遍歷 links 中的所有鏈接(比如其中一個鏈接是:https://bj.lianjia.com/zufang/101101570737.html)

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

調用 insert 函數將某一個鏈接裡得到的 Info 信息寫入數據庫的 house 表中去。深入到 insert 函數內部,我們可以知道它是通過數據庫的遊標函數 cursor()來執行一段 SQL語句然後數據庫進行 commit 操作來實現響應功能。這裡 SQL 語句的寫法比較特殊,用到了 format 函數來進行格式化,這樣做是為了便於函數的複用。

最後,運行一下爬蟲代碼,可以看到鏈家網的首頁所有房源的信息都寫入到數據裡了。(注:test 是我手動指定的測試字符串)

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

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

請關注+私信回覆:“學習”就可以免費拿到軟件測試學習資料

一小時入門Python爬蟲,連我都會了!Python爬取租房數據實例

"

相關推薦

推薦中...