使用beautifulsoup和re抓取鏈家資料基礎並儲存為csv檔案
本辦法只考慮抓取鏈家二手房100頁的基礎資料
import requests
from bs4 import BeautifulSoup
import re
# 鏈家的二手房基礎頁面只顯示最多100頁,每頁30個房源的資料,也就是用這個辦法,最多可以拿到3000家房源的資料
page = 2 # 用於定義頁數
# 先開啟一個csv檔案,定義好標題,以備資料插入
with open(r'c:\lianjia.csv','a') as f:
f.write('{},{},{},{},{},{},{},{},{},{},{},{},\n'.format('房源編號','小區','商圈','戶型','面積','朝向','戶型','裝修','年代','總價','單價','標題'))
for i in range(1,page):
url = 'https://xm.lianjia.com/ershoufang/pg'+str(i)
# print(url)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.66'
}
html = requests.get(url,headers = headers).text
soup = BeautifulSoup(html,'html.parser')
# print(soup)
infos = soup.find('ul',{'class':'sellListContent'}).find_all('li')
# print(infos)
for info in infos:
# 先獲取房源的標題內容,房源ID包含在標題中,獲取ID的辦法困擾了我很久,我相信一個簡潔的辦法一定是使用正規表示式獲取,不過我還沒研究透,所以用了土辦法,先轉化為文字進行切片,然後根據切片後的列表進行提取
titleinfo = str(info.find('div',{'class':'title'}))
titleinfolist = titleinfo.split('"')
house_id = titleinfolist[7]
# print(house_id)
name = info.find('div',{'class':'title'}).find('a').get_text()
# 由於小區名字和小區所屬商圈都在class=positionInfo這個切片下面,所以需要先將兩個名字放入列表,然後分別提取
weizhi = info.find('div',{'class':'positionInfo'}).find_all('a')
data_list = []
for z in weizhi:
data_list.append(z.get_text())
xiaoqu = data_list[0]
shangquan = data_list[1]
# 有了小區名和位置,接下來就是看房子的具體資訊,同樣需要先轉為列表然後切片
houseinfo = info.find('div',{'class':'houseInfo'}).get_text()
houseinfolist = houseinfo.split('|')
roominfo = houseinfolist[0]
# 面積是浮點數,要用正規表示式提取
mianji = re.findall(r'-?\d+\.?\d*e?-?\d*?',houseinfolist[1])[0]
chaoxiang = houseinfolist[2]
zhuangxiu = houseinfolist[3]
louceng = houseinfolist[4]
nian = houseinfolist[5]
# louxing = houseinfolist[6]
# 接下來是總價
totalprice = info.find('div',{'class':'totalPrice'}).find('span').text
# 接下來是每平單價,用正規表示式提取整數
unitprice = re.sub('\D','',info.find('div', {'class': 'unitPrice'}).find('span').text)
# 接下來是存入csv
f.write('{},{},{},{},{},{},{},{},{},{},{},{},\n'.format(house_id,xiaoqu,shangquan,roominfo,mianji,chaoxiang,zhuangxiu,louceng,nian,totalprice,unitprice,name))
相關文章
- PHP匯出大量資料,儲存為CSV檔案PHP
- Go Web:資料儲存(2)——CSV檔案GoWeb
- CSV檔案儲存
- 資料儲存--檔案儲存
- skmultiflow使用自己的csv檔案訓練模型並儲存實驗結果模型
- (詳細)python爬取網頁資訊並儲存為CSV檔案(後面完整程式碼!!!)Python網頁
- Pandas 基礎 (4) - 讀 / 寫 Excel 和 CSV 檔案Excel
- 修改並儲存hosts檔案
- pandas讀取csv檔案資料並使用matplotlib畫折線圖和餅圖
- Android中的資料儲存之檔案儲存Android
- jmeter使用問題——將介面返回變數儲存成csv檔案JMeter變數
- 【0基礎學爬蟲】爬蟲基礎之檔案儲存爬蟲
- [資料庫系統]儲存和檔案結構資料庫
- 豬行天下之Python基礎——7.1 檔案儲存Python
- 資料儲存(歸檔解檔,沙河儲存)
- python基礎語法 - 資料儲存模型Python模型
- 大資料檔案儲存系統HDFS大資料
- 使用HTML5 IndexDB儲存影象和檔案HTMLIndex
- 如何使用python把json檔案轉換為csv檔案PythonJSON
- 使用python3抓取鏈家二手房資料Python
- 使用dbeaver 用csv 檔案進行資料遷移
- 塊儲存 檔案儲存 物件儲存物件
- 【Python基礎】Python處理Excel檔案,進行篩選資料、排序等操作及儲存新的Excel檔案PythonExcel排序
- 【0基礎學爬蟲】爬蟲基礎之資料儲存爬蟲
- 041、Vue3+TypeScript基礎,使用pinia庫來儲存資料VueTypeScript
- #用openfiledialog檔案和savefileDialog開啟和儲存檔案
- 使用 Docker 搭建 minio 檔案儲存Docker
- 檔案儲存
- (Python基礎教程之十二)Python讀寫CSV檔案Python
- 【Python3網路爬蟲開發實戰】5-資料儲存-1 檔案儲存-2 JSON檔案儲存Python爬蟲JSON
- 使用canvas儲存網頁為pdf檔案支援跨域Canvas網頁跨域
- 使用shell指令碼替換csv檔案中的資料指令碼
- PHP 匯出大資料 CSV 檔案PHP大資料
- 使用PHP原生匯出Excel和CSV檔案PHPExcel
- Pandas之EXCEL資料讀取/儲存/檔案分割/檔案合併Excel
- CentOS修改Mariadb資料庫檔案儲存路徑CentOS資料庫
- 微信儲存的檔案在哪個資料夾
- mysql 資料儲存檔案及6類日誌MySql