使用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爬蟲] BeautifulSoup爬取+CSV儲存貴州農產品資料Python爬蟲
- Pandas 基礎 (4) - 讀 / 寫 Excel 和 CSV 檔案Excel
- (詳細)python爬取網頁資訊並儲存為CSV檔案(後面完整程式碼!!!)Python網頁
- 修改並儲存hosts檔案
- pandas讀取csv檔案資料並使用matplotlib畫折線圖和餅圖
- IOS資料儲存之檔案沙盒儲存iOS
- jmeter使用問題——將介面返回變數儲存成csv檔案JMeter變數
- 【0基礎學爬蟲】爬蟲基礎之檔案儲存爬蟲
- MySQL 5.5使用CSV儲存引擎匯入載入資料MySql儲存引擎
- NPOI抓取WPS表格儲存的EXCEL檔案Excel
- Oracle 通過儲存過程來生成CSV檔案Oracle儲存過程
- [資料庫系統]儲存和檔案結構資料庫
- Android中的資料儲存之檔案儲存Android
- 資料檔案是否是smallfile型別檔案,其儲存是否達到資料檔案儲存上限,是否是多個資料檔案型別
- 資料儲存(歸檔解檔,沙河儲存)
- 【資料庫】資料庫儲存元素型別基礎資料庫型別
- 使用python3抓取鏈家二手房資料Python
- 豬行天下之Python基礎——7.1 檔案儲存Python
- 【0基礎學爬蟲】爬蟲基礎之資料儲存爬蟲
- 檔案系統儲存與oracle資料庫儲存對比Oracle資料庫
- python基礎語法 - 資料儲存模型Python模型
- 大資料檔案儲存系統HDFS大資料
- ORACLE資料檔案儲存之我見Oracle
- 041、Vue3+TypeScript基礎,使用pinia庫來儲存資料VueTypeScript
- 使用dbeaver 用csv 檔案進行資料遷移
- Asp.Net 上傳大檔案專題(3)--從請求流中獲取資料並儲存為檔案[上]ASP.NET
- Asp.Net 上傳大檔案專題(3)--從請求流中獲取資料並儲存為檔案[下]ASP.NET
- 使用HTML5 IndexDB儲存影象和檔案HTMLIndex
- python3使用requests包抓取並儲存網頁原始碼Python網頁原始碼
- oracle基礎管理——表空間和資料檔案Oracle
- RAC歸檔配置方案:使用NFS共享儲存儲存歸檔檔案NFS
- 塊儲存 檔案儲存 物件儲存物件
- Matlab將.mat檔案儲存為.txt檔案Matlab