代碼以下(示例):css
import scrapy
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
代碼以下(示例):python
# terminal 終端實現 cd .. # 跳轉到上一層目錄 scrapy startproject booktop # 和項目同名的scrapy框架項目
代碼以下(示例):網絡
ROBOTSTXT_OBEY = False # 君子協議 false 不遵照 USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36' DOWNLOAD_DELAY = 0.5 # 下載延遲
代碼以下(示例):框架
# spiders文件夾下建立python文件 ganspider.py import scrapy from demo6.items import HouseItem class GanJiSpider(scrapy.Spider): name="gan_spider" allowed_domains=["xiangyang.ganji.com"] start_urls=["http://xiangyang.ganji.com/zufang/"] # 解析數據 def parse(self, response, **kwargs): # print(response.text)
代碼以下(示例):dom
# 在terminal終端進行 cd gandemo # 進入項目文件夾 scrapy crawl gan_spider # 運行項目下的爬蟲(和name的值保持一致) # 測試成功,看到頁面代碼
代碼以下(示例):scrapy
# 須要導入HouseItem類 文件開頭導入 from demo6.items import HouseItem from demo6.items import HouseItem class HouseSpider(scrapy.Spider): name="house_spider" allowed_domains=["xiangyang.ganji.com"] start_urls=["http://xiangyang.ganji.com/zufang/"] # 解析數據 def parse(self, response, **kwargs): # 全部的房子 houses=response.css('dl.f-list-item-wrap.min-line-height.f-clear') # 戶型 價格 for house in houses: size=house.css('dd.dd-item.size span:first-child::text').extract() [0] # print(size) price=house.css('div.price span.num::text').extract()[0] # print(price) yield HouseItem(size=size,price=price)
代碼以下(示例):ide
# items.py書寫房屋類 class HouseItem(scrapy.Item): size=scrapy.Field() price=scrapy.Field() pass
代碼以下(示例):學習
# 在setting文件下,解開註釋
ITEM_PIPELINES = { 'booktop.pipelines.HousePipeline': 300, } #數據存儲到txt文件下 # 打開管道文件 BooktopPipeline class HousePipeline: def process_item(self, item, spider): file=open('house.txt','a+',encoding='utf-8') file.write( item['size']+','+item['price']+'\n') return item # 運行測試結果house.txt下有數據成功
代碼以下(示例):測試
# 在項目中建立 分析文件 demo.py import pandas as pd import matplotlib.pyplot as plt # 數據源 data=pd.read_csv('house.txt',names=['size','price']) print(data) # 統計groupby不一樣戶型的最高價max,最低價min,均價mean, result=data.groupby('size').agg(['max','min','mean']) print(result) # 繪製不一樣戶型均價折線圖、柱狀圖 import matplotlib # 中文可顯示 font = {'family': 'microsoft yahei', 'weight': 'bold', 'size': 12} matplotlib.rc('font', **font) plt.title('不一樣戶型房源示意圖') # 折線圖 柱狀圖 plt.plot(result.index,result['price']['mean'],'r*--') plt.bar(result.index,result['price']['mean']) plt.show()
本文的文字及圖片來源於網絡,僅供學習、交流使用,不具備任何商業用途,若有問題請及時聯繫咱們以做處理
想要獲取更多Python學習資料能夠加
QQ:2955637827私聊
或加Q羣630390733
你們一塊兒來學習討論吧!