爬取鏈家租房資料,資料處理,進行視覺化分析
lianjiaspider.py
import asyncio import aiohttp import pandas as pd from lxml import etree class LianjiaSpider(object): def __init__(self): self._headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"} self._data = list() async def get(self, url): async with aiohttp.ClientSession() as session: try: async with session.get(url, headers=self._headers, timeout=3) as resp: if resp.status == 200: result = await resp.text() return result except Exception as e: print(e.args) async def parse_html(self): for page in range(1, 77): url = "https://sjz.lianjia.com/zufang/pg{}/".format(page) print("正在爬取{}".format(url)) html = await self.get(url) # 獲取網頁內容 html = etree.HTML(html) self.parse_page(html) print("正在儲存資料....") data = pd.DataFrame(self._data) data.to_csv("lianjia.csv", encoding='utf_8_sig') # 寫入檔案 def parse_page(self, html): info_panel = html.xpath("//div[@class='info-panel']") for info in info_panel: region = info.xpath(".//span[@class='region']/text()") zone = info.xpath(".//span[@class='zone']/span/text()") meters = info.xpath(".//span[@class='meters']/text()") where = info.xpath(".//div[@class='where']/span[4]/text()") con = info.xpath(".//div[@class='con']/text()") floor = con[0] # 樓層 type = con[1] # 樣式 agent = info.xpath(".//div[@class='con']/a/text()")[0] has = info.xpath(".//div[@class='left agency']//text()") price = info.xpath(".//div[@class='price']/span/text()")[0] price_pre = info.xpath(".//div[@class='price-pre']/text()")[0] look_num = info.xpath(".//div[@class='square']//span[@class='num']/text()")[0] one_data = { "region": region, "zone": zone, "meters": meters, "where": where, "louceng": floor, "type": type, "xiaoshou": agent, "has": has, "price": price, "price_pre": price_pre, "num": look_num } self._data.append(one_data) # 新增資料 def run(self): loop = asyncio.get_event_loop() tasks = [asyncio.ensure_future(self.parse_html())] loop.run_until_complete(asyncio.wait(tasks)) if __name__ == '__main__': Lian_jia = LianjiaSpider() Lian_jia.run()
lianjia.csv
,has,louceng,meters,num,price,price_pre,region,type,where,xiaoshou,zone 0,['集中供暖'],高樓層(共33層),['127.86平米\xa0\xa0'],0,2300,2018.11.08 更新,['鳳凰城梧桐苑\xa0\xa0'],板樓,['南'],南焦租房,['3室2廳\xa0\xa0'] 1,['集中供暖'],中樓層(共6層),['55平米\xa0\xa0'],0,1200,2018.11.04 更新,['華興小區\xa0\xa0'],板樓,['南'],世紀公園租房,['1室1廳\xa0\xa0'] 2,['集中供暖'],中樓層(共6層),['138平米\xa0\xa0'],0,2400,2018.11.04 更新,['河冶小區\xa0\xa0'],板樓,['南 北'],躍進租房,['3室2廳\xa0\xa0'] 3,['集中供暖'],低樓層(共6層),['90平米\xa0\xa0'],1,1500,2018.11.06 更新,['瑞國花園\xa0\xa0'],板樓,['南'],躍進租房,['2室2廳\xa0\xa0'] 4,['集中供暖'],低樓層(共14層),['180平米\xa0\xa0'],0,3500,2018.11.13 更新,['華脈新村\xa0\xa0'],板樓,['南 北'],四十中學租房,['4室2廳\xa0\xa0'] 5,"['近地鐵', '隨時看房', '集中供暖']",中樓層(共40層),['57平米\xa0\xa0'],0,3000,2018.11.09 更新,['華潤大廈\xa0\xa0'],塔樓,['西'],南長租房,['1室1廳\xa0\xa0'] 6,"['近地鐵', '隨時看房', '集中供暖']",中樓層(共40層),['42.56平米\xa0\xa0'],0,2200,2018.11.09 更新,['華潤大廈\xa0\xa0'],塔樓,['南'],南長租房,['1室1廳\xa0\xa0'] 7,['集中供暖'],中樓層(共34層),['148平米\xa0\xa0'],0,2500,2018.11.08 更新,['北城國際B區\xa0\xa0'],板樓,['南 北'],沿東租房,['3室2廳\xa0\xa0'] 8,"['近地鐵', '隨時看房', '集中供暖']",中樓層(共40層),['40.09平米\xa0\xa0'],0,2100,2018.11.09 更新,['華潤大廈\xa0\xa0'],塔樓,['南'],南長租房,['1室1廳\xa0\xa0'] 9,"['近地鐵', '集中供暖']",低樓層(共33層),['185平米\xa0\xa0'],0,22000,2018.11.10 更新,['青鳥中山華府\xa0\xa0'],板樓,['北'],大經租房,['1室1廳\xa0\xa0'] 10,"['近地鐵', '集中供暖']",低樓層(共33層),['242平米\xa0\xa0'],0,29000,2018.11.05 更新,['青鳥中山華府\xa0\xa0'],板樓,['北'],大經租房,['1室1廳\xa0\xa0']
去除無用字元
import re f = open("lian_jia.csv", 'w', encoding='utf-8') filename = 'lianjia.csv' with open(filename, 'r', encoding='utf-8')as file: frd = file.readlines() for i in frd: pattern = re.compile(r'xa0') out = re.sub(pattern, '', i) s = "".join("".join("".join(out.split("\\\\")).split("']")).split("['")) d = "".join(s.split("平米")) f.write(d)
lian_jia.csv
,has,louceng,meters,num,price,price_pre,region,type,where,xiaoshou,zone
0,集中供暖,高樓層(共33層),127.86,0,2300,2018.11.08 更新,鳳凰城梧桐苑,板樓,南,南焦租房,3室2廳
1,集中供暖,中樓層(共6層),55,0,1200,2018.11.04 更新,華興小區,板樓,南,世紀公園租房,1室1廳
2,集中供暖,中樓層(共6層),138,0,2400,2018.11.04 更新,河冶小區,板樓,南 北,躍進租房,3室2廳
3,集中供暖,低樓層(共6層),90,1,1500,2018.11.06 更新,瑞國花園,板樓,南,躍進租房,2室2廳
4,集中供暖,低樓層(共14層),180,0,3500,2018.11.13 更新,華脈新村,板樓,南 北,四十中學租房,4室2廳
5,"近地鐵', '隨時看房', '集中供暖",中樓層(共40層),57,0,3000,2018.11.09 更新,華潤大廈,塔樓,西,南長租房,1室1廳
6,"近地鐵', '隨時看房', '集中供暖",中樓層(共40層),42.56,0,2200,2018.11.09 更新,華潤大廈,塔樓,南,南長租房,1室1廳
7,集中供暖,中樓層(共34層),148,0,2500,2018.11.08 更新,北城國際B區,板樓,南 北,沿東租房,3室2廳
8,"近地鐵', '隨時看房', '集中供暖",中樓層(共40層),40.09,0,2100,2018.11.09 更新,華潤大廈,塔樓,南,南長租房,1室1廳
9,"近地鐵', '集中供暖",低樓層(共33層),185,0,22000,2018.11.10 更新,青鳥中山華府,板樓,北,大經租房,1室1廳
10,"近地鐵', '集中供暖",低樓層(共33層),242,0,29000,2018.11.05 更新,青鳥中山華府,板樓,北,大經租房,1室1廳
視覺化戶型數量分佈
import pandas as pd
import matplotlib.pyplot as plt
house = pd.read_csv('lian_jia.csv', names=['', 'has', 'louceng', 'meters', 'num', 'price', 'price_pre', 'region', 'type', 'where','xiaoshou', 'zone'])
zone = house['zone'].value_counts()
plt.rcParams['font.sans-serif'] = ['FangSong'] # 指定預設字型
asd, sdf = plt.subplots(1, 1, dpi=200) # 設定畫布
zone.head(10).plot(kind='bar', x='zone', y='size', title='戶型數量分佈', ax=sdf) # 獲取前10條資料
plt.legend(['數量'])
plt.show()
柱狀圖
相關推薦
爬取鏈家租房資料,資料處理,進行視覺化分析
lianjiaspider.py import asyncio import aiohttp import pandas as pd from lxml import etree class LianjiaSpider(object): def __init
爬取鏈家網租房資訊(萬級資料的簡單實現)
這不是一個很難的專案,沒有ajax請求,也沒有用框架,只是一個requests請求和BeautifulSoup的解析 不過,看這段程式碼你會發現,BeautifulSoup不止只有find和fing_all用於元素定位,還有fing_next等其他的更簡單的,
分享爬取鏈家地圖找房房價資料的小爬蟲
一、說在前面 受人所託,爬取鏈家上地圖找房的資料:https://bj.lianjia.com/ditu/。 上面有按區域劃分的二手房均價和在售套數,我們的任務就是抓下這些資料。 二、開幹 2.1失敗一次 老樣子,Chrome 按下F12開啟Chrome DevTo
python爬取鏈家新房資料
轉載:https://blog.csdn.net/clyjjczwdd/article/details/79466032 from bs4 import BeautifulSoup import requests import time import pandas as p
資料採集(四):用XPath爬取鏈家網房價資料
準備工作 編寫爬蟲前的準備工作,我們需要匯入用到的庫,這裡主要使用的是requests和lxml兩個。還有一個Time庫,負責設定每次抓取的休息時間。 import requests import requests import time from lxml
Python爬取鏈家地鐵房資料
#coding=gbk #因為涉及到中文,utf-8會報錯 ### 環境:Python 3.6### import requests import re import pandas as pd import csv from bs4 import BeautifulSoup
使用Java及jsoup爬取鏈家北京二手房房價資料
由於是初次使用Java寫爬蟲,所以程式碼有些繁瑣,請大家見諒,並能給與指正首先分析鏈家北京二手房頁面,使用360瀏覽器的審查元素功能,檢視原始碼,獲取查詢標籤如圖一級查詢所示,此圖標籤所獲取的是鏈家北京二手房頁面下的一級地區地址由於具體獲取有些複雜,故列大致步驟如下主頁——》
利用高德API + Python爬取鏈家網租房資訊 01
看了實驗樓的專案發現五八同城爬取還是有點難度所以轉戰鏈家 實驗程式碼如下 from bs4 import BeautifulSoup from urllib.request import urlopen import csv url = 'https://gz.lia
爬取拉勾熱門城市“資料分析”崗位,並進行視覺化分析
首先,寫一個爬取崗位的爬蟲,如下:# -*- coding:utf-8 -*- from json import JSONDecodeError import requests import time import pandas as pd # 獲取儲存職位資訊的json
爬蟲,爬取鏈家網北京二手房資訊
# 鏈家網二手房資訊爬取 import re import time import requests import pandas as pd from bs4 import BeautifulSoup url = 'http://bj.lianjia.com/ershouf
初識Scrapy框架+爬蟲實戰(7)-爬取鏈家網100頁租房資訊
Scrapy簡介 Scrapy,Python開發的一個快速、高層次的螢幕抓取和web抓取框架,用於抓取web站點並從頁面中提取結構化的資料。Scrapy用途廣泛,可以用於資料探勘、監測和自動化測試。Scrapy吸引人的地方在於它是一個框架,任何人都可以根
Django實戰: Python爬蟲爬取鏈家上海二手房資訊,存入資料庫並在前端顯示
好久沒寫Django實戰教程了,小編我今天就帶你把它與Python爬蟲結合做出個有趣的東西吧。我們將開發這樣一個應用,前端使用者可以根據行政區劃,房廳數和價格區間選擇需要爬取的二手房房源資訊,後臺Python開始爬取資料。爬取資料完成後,通過Django將爬來的資料存入資料庫
爬蟲爬取鏈家二手房資訊,對二手房做分析
import numpy as np import pandas as pd import matplotlib.pyplot as plt from bs4 import BeautifulSoup import requests def genera
Scrapy實戰篇(九)之爬取鏈家網天津租房數據
房子 爬取 思路 頁面 scrapy more 關心 分析 網上 以後有可能會在天津租房子,所以想將鏈家網上面天津的租房數據抓下來,以供分析使用。 思路: 1、以初始鏈接https://tj.lianjia.com/zufang/rt200600000001
python爬蟲:爬取鏈家深圳全部二手房的詳細信息
data sts rip 二手房 lse area 列表 dom bubuko 1、問題描述: 爬取鏈家深圳全部二手房的詳細信息,並將爬取的數據存儲到CSV文件中 2、思路分析: (1)目標網址:https://sz.lianjia.com/ershoufang/ (2
Python爬蟲項目--爬取鏈家熱門城市新房
聲明 rules nal logging 命令行 -- new exec 狀態 本次實戰是利用爬蟲爬取鏈家的新房(聲明: 內容僅用於學習交流, 請勿用作商業用途) 環境 win8, python 3.7, pycharm 正文 1. 目標網站分析 通過分析, 找出相關url
Python爬蟲專案--爬取鏈家熱門城市新房
本次實戰是利用爬蟲爬取鏈家的新房(宣告: 內容僅用於學習交流, 請勿用作商業用途) 環境 win8, python 3.7, pycharm 正文 1. 目標網站分析 通過分析, 找出相關url, 確定請求方式, 是否存在js加密等. 2. 新建scrapy專案 1. 在cmd命令列視窗中輸入以
python 學習 - 爬蟲入門練習 爬取鏈家網二手房資訊
import requests from bs4 import BeautifulSoup import sqlite3 conn = sqlite3.connect("test.db") c = conn.cursor() for num in range(1,101): url = "h
43.scrapy爬取鏈家網站二手房信息-1
response ons tro 問題 import xtra dom nts class 首先分析:目的:采集鏈家網站二手房數據1.先分析一下二手房主界面信息,顯示情況如下:url = https://gz.lianjia.com/ershoufang/pg1/顯示
43.scrapy爬取鏈家網站二手房資訊-1
首先分析:目的:採集鏈家網站二手房資料1.先分析一下二手房主介面資訊,顯示情況如下:url = https://gz.lianjia.com/ershoufang/pg1/顯示總資料量為27589套,但是頁面只給返回100頁的資料,每頁30條資料,也就是隻給返回3000條資料。