python3爬蟲實戰-安居客寫字樓信息,學會月入上萬理所當然

說起python爬蟲,相信大家都覺得很神奇,為什麼python爬蟲叫做網絡蜘蛛,對於這一點,相信大家一定覺得高大神奇,其實爬蟲技術這個過程很無聊,但是獲取到想要的結果的時候就很開心,那麼今天大家就跟隨我的腳步進入爬蟲的技術領域,話不多說,我們頭條號只講乾貨!

python3爬蟲實戰-安居客寫字樓信息,學會月入上萬理所當然

那麼今天就帶領大家去爬取安居客這個網站的一些房產數據,今天我們爬取的是關於寫字樓的六項數據,那麼首先我會一步一步講解程序的每一步實現的作用,最後會附上完整代碼,大家可以拿去自己進行實驗,不懂的地方歡迎下方留言或者私信我都可以,有時間就回復!

安居客北京寫字樓六項數據爬取

安居客的北京寫字樓鏈接:
https://bj.sydc.anjuke.com/xzl-zu/?from=navigation

具體的代碼塊以及每一塊的作用會在下面詳細說明:

# 輸入相應的庫文件
# requests庫用於對網站發送請求,請求成功網站會返回給我們一個響應值
import requests
# BeautifulSoup庫從bs4模塊導入,用於對網站的響應值進行解析
from bs4 import BeautifulSoup
# csv庫用於把爬取的文件放進csv文件內
import csv
# time庫有很多用法,這裡是用來防止反爬機制
import time
# 由於網站信息頁面有很多頁數,我們這裡設置爬取100頁
urls = ['https://bj.sydc.anjuke.com/xzl-zu/p{}/'.format(number)for number in range(1, 101)]
# 假如請求頭,模擬瀏覽器登錄請求,防止被封ip地址
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/'
 '537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'}
# 打開名為:大北京.csv的文件,先給第一行加一些名字['標題', '地址', '日租價格', '月租價格', '樓層特點', '面積']
with open('大北京.csv', 'a', newline='', encoding='utf-8-sig') as csvfile:
 w = csv.writer(csvfile)
 w.writerow(['標題', '地址', '日租價格', '月租價格', '樓層特點', '面積'])
# 由於有很多頁面,每一個頁面都有相應的鏈接,這裡設置循環按順序爬取每一個網頁
for url in urls:
 # 對網站發送請求
 wb_data = requests.get(url, headers=headers)
 # 對返回的響應體進行解析
 soup = BeautifulSoup(wb_data.text, "lxml")
 # 用select函數抽取需要的內容,單擊需要的內容》檢查》copy select
 titles = soup.select("#list-content > div > dl > dt > span") # 在解析後的文檔中查找標題
 addresses = soup.select("#list-content > div > dl > dd.address > span:nth-child(2)") # 地址
 dprices = soup.select("#list-content > div > div.item-price > div.price-a > em") # 日租價格
 mprices = soup.select("#list-content > div > div.item-price > div.price-b > em") # 月租價格
 lous = soup.select("#list-content > div > dl > dd:nth-child(2) > span:nth-child(3)") # 樓層屬性
 areas = soup.select("#list-content > div > dl > dd:nth-child(2) > span:nth-child(1)") # 面積大小
 # 進一步獲取我們想要的數據
 for title, address, dprice, area, lou, mprice in zip(titles, addresses, dprices, areas, lous, mprices):
 # 建立空列表,分配存儲地址
 data = []
 dprice = dprice.text, # 價格直接獲取裡面的文本就可以,兩邊是標籤
 dprice = dprice[0]+"元/m²•天"
 mprice = mprice.text, # 價格直接獲取裡面的文本就可以,兩邊是標籤
 mprice = mprice[0]+"元/月"
 title = title.text.strip(), # 獲得文本並去除掉文本兩側的不必要的字符,用strip()
 title = title[0]
 address = address.text.strip('[]') # 同樣地址也是去除兩頭不必要的字符串
 area = area.text.strip("平米"),
 area = area[0]+"m²" # 獲取面積
 lou = lou.text,
 data = [title, address, dprice, mprice, lou, area] # 將以上數據放入列表中打印在命令框
 print(data)
 # 打開文件大北京.csv,並循環地將數據寫入其中,with open是自動關閉的函數
 with open('大北京.csv', 'a', newline='', encoding='utf-8-sig') as csvfile:
 w = csv.writer(csvfile)
 w.writerow(data)
 time.sleep(5)

 
python3爬蟲實戰-安居客寫字樓信息,學會月入上萬理所當然

以上就是所有的代碼塊,最終會保存在本地文檔的.csv文件裡面,文字繁多,一個人打字比較操勞,如果有可能我會開直播給大家教學,謝謝支持與關注,您的支持與關注是我進行下去的動力!


分享到:


相關文章: