房子問題近些年來越來越受到大家的關注,要了解近些年的房價,首先就要獲取網上的房價資訊,我們以鏈家網上**的房價資訊為例,將資料爬取下來並儲存起來。
這次資訊的爬取我們依然採取requests-beautiful soup的線路來爬取鏈家網上的**房的資訊。需要安裝好anaconda,並保證系統中已經有requests庫,beautiful soup4庫和csv庫已經安裝。
我們要爬取的網頁如下,我們需要的資訊有房子的名稱和**
如下圖:
下面我們來分析我們所要提取的資訊的位置,開啟開發者模式查詢元素,我們找到房子的名稱和**;如下圖:
我們可以看到我們所需要的房子名稱的資訊在裡面,**資訊在裡面,所有的資訊都封裝在li標籤裡面。
我們分析了乙個網頁裡面的網頁結構,要爬取其他網頁的資訊還要看到更多的結構;
每頁的鏈結都以pg+某頁數字結尾,我們以此發現規律。
接下來我們來編寫程式的主體結構:
import requests
from bs4 import beautifulsoup
import csv
def gethtmltext(url): #獲取網頁資訊
return ""
def get_data(list,html): #獲取資料並儲存下來
def main():
start_url = "pg"
depth = 20
info_list =
for i in range(depth):
url = start_url + str(i)
html = gethtmltext(url)
get_data(info_list,html)
main()
根據各個函式的目的,來填充函式的具體內容,第乙個函式要獲取網頁資訊:
def gethtmltext(url):
try:
r = requests.get(url)
r.raise_for_status()
return r.text
except:
return "產生異常"
第二個函式是要獲取資料並儲存在檔案中;
def get_data(list,html):
soup = beautifulsoup(html,'html.parser')
infos = soup.find('ul',).find_all('li') #找到所有的li標籤
with open(r'/users/11641/desktop/lianjia.csv','a',encoding='utf-8') as f: #建立乙個lianjia.csv的檔案並寫入
for info in infos:
name = info.find('div',).find('a').get_text()
price =info.find('div',).find('div',).find('span').get_text()
f.write("{},{}\n".format(name,price))
上面我們就寫完了這個爬蟲程式
但是要注意的是:執行完成的程式以csv檔案儲存下來,如果直接用excel開啟可能會有亂碼現象,一般用如下步驟解決:
用記事本開啟檔案,另存為選擇編碼為:ansi,儲存檔案;將儲存的新檔案用excel開啟,另存為excel檔案格式,就可永久儲存檔案
我們來看一下檔案儲存的效果,如下圖:
上面我們成功的寫完了鏈家二手房爬蟲的**,並成功輸出了我們大致所要的結果,全部**如下;
#爬取鏈家二手房資訊
import requests
from bs4 import beautifulsoup
import csv
def gethtmltext(url):
try:
r = requests.get(url,timeout=30)
r.raise_for_status()
return r.text
except:
return '產生異常'
def get_data(list,html):
soup = beautifulsoup(html,'html.parser')
infos = soup.find('ul',).find_all('li')
with open(r'/users/11641/desktop/lianjia.csv','a',encoding='utf-8') as f:
for info in infos:
name = info.find('div',).find('a').get_text()
price =info.find('div',).find('div',).find('span').get_text()
f.write("{},{}\n".format(name,price))
def main():
start_url = 'pg'
depth = 20
info_list =
for i in range(depth):
url = start_url + str(i)
html = gethtmltext(url)
get_data(info_list,html)
main()
1.爬蟲主要用requests庫和beautiful soup庫可以簡明地爬取網頁上的資訊;2.先定好程式主要框架,再根據目的需求填充函式內容:獲取網頁資訊》爬取網頁資料》儲存資料;3.對於所有的資訊儲存於多頁,要觀察網頁資訊,構造每頁的url鏈結來解決;4.最重要的是解析網頁結構,最好可以用標籤樹的形式確定字段所在的標籤,並遍歷全部標籤儲存資料。
另外,強烈推薦北京理工大學嵩天老師的python系列課程。
目前處於申請維護狀態)
爬取鏈家網房價資料
感覺最近做的東西好菜 隨便了。d 鏈家房價資料.csv wt newline encoding utf8 writer csv.writer fp writer.writerow 樓盤名 位址 房間格式 房間面積 起價 優點 defget html url try response requests...
Python爬蟲實戰之爬取鏈家廣州房價 03儲存
系列目錄 python爬蟲實戰之爬取鏈家廣州房價 01簡單的單頁爬蟲 python爬蟲實戰之爬取鏈家廣州房價 02把小爬蟲變大 這一小節主要講一下前面一直沒有實現的儲存,儲存主要分兩大類 檔案和資料庫。結合這次爬蟲的資料量及後期分析的需要,這次主要介紹sqlite。通過對sqlite資料庫的封裝,處...
Python爬取鏈家二手房資訊
2 資料庫表結構 使用物件導向的方式,搭建專案框架 import requests from bs4 import beautifulsoup import pymysql class lianjiaspider mydb pymysql.connect localhost root 123456 ...