中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python爬蟲入門【16】:鏈家租房數據抓取

發布時間:2020-07-26 16:43:08 來源:網絡 閱讀:456 作者:學Python派森 欄目:編程語言

1. 寫在前面

作為一個活躍在京津冀地區的開發者,要閑著沒事就看看石家莊這個國際化大都市的一些數據,這篇博客爬取了鏈家網的租房信息,爬取到的數據在后面的博客中可以作為一些數據分析的素材。
我們需要爬取的網址為:https://sjz.lianjia.com/zufang/

2. 分析網址

首先確定一下,哪些數據是我們需要的

Python爬蟲入門【16】:鏈家租房數據抓取

可以看到,×××框就是我們需要的數據。

接下來,確定一下翻頁規律

https://sjz.lianjia.com/zufang/pg1/
https://sjz.lianjia.com/zufang/pg2/
https://sjz.lianjia.com/zufang/pg3/
https://sjz.lianjia.com/zufang/pg4/
https://sjz.lianjia.com/zufang/pg5/
... 
https://sjz.lianjia.com/zufang/pg80/
Python資源分享qun 784758214 ,內有安裝包,PDF,學習視頻,這里是Python學習者的聚集地,零基礎,進階,都歡迎

3. 解析網頁

有了分頁地址,就可以快速把鏈接拼接完畢,我們采用lxml模塊解析網頁源碼,獲取想要的數據。

本次編碼使用了一個新的模塊 fake_useragent ,這個模塊,可以隨機的去獲取一個UA(user-agent),模塊使用比較簡單,可以去百度百度就很多教程。

本篇博客主要使用的是調用一個隨機的UA

self._ua = UserAgent()
self._headers = {"User-Agent": self._ua.random}  # 調用一個隨機的UA

由于可以快速的把頁碼拼接出來,所以采用協程進行抓取,寫入csv文件采用的pandas模塊

from fake_useragent import UserAgent
from lxml import etree
import asyncio
import aiohttp
import pandas as pd

class LianjiaSpider(object):

    def __init__(self):
        self._ua = UserAgent()
        self._headers = {"User-Agent": self._ua.random}
        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("鏈家網租房數據.csv", encoding='utf_8_sig')   # 寫入文件
            ######################### 數據寫入

    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__':
    l = LianjiaSpider()
    l.run()

上述代碼中缺少一個解析網頁的函數,我們接下來把他補全

    def parse_page(self,html):
        info_panel = html.xpath("http://div[@class='info-panel']")
        for info in info_panel:
            region = self.remove_space(info.xpath(".//span[@class='region']/text()"))
            zone = self.remove_space(info.xpath(".//span[@class='zone']/span/text()"))
            meters = self.remove_space(info.xpath(".//span[@class='meters']/text()"))
            where = self.remove_space(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)  # 添加數據
Python資源分享qun 784758214 ,內有安裝包,PDF,學習視頻,這里是Python學習者的聚集地,零基礎,進階,都歡迎

不一會,數據就爬取的差不多了。

Python爬蟲入門【16】:鏈家租房數據抓取

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

上杭县| 万源市| 长岛县| 唐河县| 桑植县| 石嘴山市| 神农架林区| 安仁县| 武汉市| 兰州市| 徐汇区| 西平县| 山阴县| 二连浩特市| 黄冈市| 山西省| 无锡市| 星座| 偃师市| 芜湖县| 基隆市| 尚义县| 洪雅县| 武山县| 通河县| 九江县| 山丹县| 城步| 盘锦市| 新河县| 临沭县| 大城县| 二手房| 巴楚县| 海兴县| 通河县| 科技| 巢湖市| 新兴县| 贵州省| 都兰县|