Python爬取房价
生活随笔
收集整理的這篇文章主要介紹了
Python爬取房价
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
# ==========導 包=============
import requests
from bs4 import BeautifulSoup
import numpy as np
import requests
from requests.exceptions import RequestException
import pandas as pd
# =====step_1 : 指 定 url=========
url = 'https://gz.fang.lianjia.com/ /'# =====step_2 : 發 起 請 求 :======
# 使 用 get 方 法 發 起 get 請 求 , 該 方 法 會 返 回 一 個 響 應 對 象 。 參 數 url 表 示 請 求 對 應 的 url
response = requests.get(url=url)# =====step_3 : 獲 取 響 應 數 據 :===
# 通 過 調 用 響 應 對 象 的 text 屬 性 , 返 回 響 應 對 象 中 存 儲 的 字 符 串 形 式 的 響 應 數 據 ( 頁 面 源 碼數 據 )
page_text = response.text# ====step_4 : 持 久 化 存 儲=======
with open('廣州房價 . html ', 'w', encoding='utf -8') as fp:fp.write(page_text)
print(' 爬 取 數 據 完 畢 !!!')
# ==================導入相關庫==================================# =============讀取網頁=========================================
def craw(url, page):try:headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36"}html1 = requests.request("GET", url, headers=headers, timeout=10)html1.encoding = 'utf-8' # 加編碼,重要!轉換為字符串編碼,read()得到的是byte格式的html = html1.textreturn htmlexcept RequestException: # 其他問題print('第{0}讀取網頁失敗'.format(page))return None# ==========解析網頁并保存數據到表格======================
def pase_page(url, page):html = craw(url, page)html = str(html)if html is not None:soup = BeautifulSoup(html, 'lxml')"--先確定房子信息,即li標簽列表--"houses = soup.select('.resblock-list-wrapper li') # 房子列表"--再確定每個房子的信息--"for j in range(len(houses)): # 遍歷每一個房子house = houses[j]"名字"recommend_project = house.select('.resblock-name a.name')recommend_project = [i.get_text() for i in recommend_project] # 名字 英華天元,斌鑫江南御府...recommend_project = ' '.join(recommend_project)# print(recommend_project)"類型"house_type = house.select('.resblock-name span.resblock-type')house_type = [i.get_text() for i in house_type] # 寫字樓,底商...house_type = ' '.join(house_type)# print(house_type)"銷售狀態"sale_status = house.select('.resblock-name span.sale-status')sale_status = [i.get_text() for i in sale_status] # 在售,在售,售罄,在售...sale_status = ' '.join(sale_status)# print(sale_status)"大地址"big_address = house.select('.resblock-location span')big_address = [i.get_text() for i in big_address] #big_address = ''.join(big_address)# print(big_address)"具體地址"small_address = house.select('.resblock-location a')small_address = [i.get_text() for i in small_address] #small_address = ' '.join(small_address)# print(small_address)"優勢。"advantage = house.select('.resblock-tag span')advantage = [i.get_text() for i in advantage] #advantage = ' '.join(advantage)# print(advantage)"均價:多少1平"average_price = house.select('.resblock-price .main-price .number')average_price = [i.get_text() for i in average_price] # 16000,25000,價格待定..average_price = ' '.join(average_price)# print(average_price)"總價,單位萬"total_price = house.select('.resblock-price .second')total_price = [i.get_text() for i in total_price] # 總價400萬/套,總價100萬/套'...total_price = ' '.join(total_price)# print(total_price)# =====================寫入表格=================================================information = [recommend_project, house_type, sale_status, big_address, small_address, advantage,average_price, total_price]information = np.array(information)information = information.reshape(-1, 8)information = pd.DataFrame(information, columns=['名稱', '類型', '銷售狀態', '大地址', '具體地址', '優勢', '均價', '總價'])information.to_csv('廣州房價.csv', mode='a+', index=False, header=False) # mode='a+'追加寫入print('第{0}頁存儲數據成功'.format(page))else:print('解析失敗')# ==================雙線程=====================================
import threadingfor i in range(1, 100, 2): # 遍歷網頁1-101url1 = "https://gz.fang.lianjia.com/loupan/pg" + str(i) + "/"url2 = "https://gz.fang.lianjia.com/loupan/pg" + str(i + 1) + "/"t1 = threading.Thread(target=pase_page, args=(url1, i)) # 線程1t2 = threading.Thread(target=pase_page, args=(url2, i + 1)) # 線程2t1.start()t2.start()
總結
以上是生活随笔為你收集整理的Python爬取房价的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 嵌入式系统开发这六点硬件设计需要细心留意
- 下一篇: 【C++】十进制转化二进制,二进制转化十