最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python手拉手教你爬取貝殼房源數(shù)據(jù)的實戰(zhàn)教程

 更新時間:2021年05月21日 14:47:11   作者:小郭鍋  
隨著人工智能的不斷發(fā)展,機器學(xué)習(xí)這門技術(shù)也越來越重要,很多人都開啟了學(xué)習(xí)機器學(xué)習(xí),本文就介紹了機器學(xué)習(xí)的基礎(chǔ)內(nèi)容,了解python爬蟲,本文給大家分享Python爬取貝殼房源數(shù)據(jù)的實戰(zhàn)教程,感興趣的朋友一起學(xué)習(xí)吧

一、爬蟲是什么?

 在進(jìn)行大數(shù)據(jù)分析或者進(jìn)行數(shù)據(jù)挖掘的時候,數(shù)據(jù)源可以從某些提供數(shù)據(jù)統(tǒng)計的網(wǎng)站獲得,也可以從某些文獻(xiàn)或內(nèi)部資料中獲得,但是這些獲得數(shù)據(jù)的方式,有時很難滿足我們對數(shù)據(jù)的需求,而手動從互聯(lián)網(wǎng)中去尋找這些數(shù)據(jù),則耗費的精力過大。此時就可以利用爬蟲技術(shù),自動地從互聯(lián)網(wǎng)中獲取我們感興趣的數(shù)據(jù)內(nèi)容,并將這些數(shù)據(jù)內(nèi)容爬取回來,作為我們的數(shù)據(jù)源,從而進(jìn)行更深層次的數(shù)據(jù)分析,并獲得更多有價值的信息。 在使用爬蟲前首先要了解爬蟲所需的庫(requests)或者( urllib.request ),該庫是為了爬取數(shù)據(jù)任務(wù)而創(chuàng)建的。

 二、使用步驟

1.引入庫

代碼如下(示例):

import os
import urllib.request
import random
import time
class BeikeSpider:
    def __init__(self, save_path="./beike"):
        """
        貝殼爬蟲構(gòu)造函數(shù)
        :param save_path: 網(wǎng)頁保存目錄
        """

2.讀入數(shù)據(jù)

代碼如下 :

# 網(wǎng)址模式
        self.url_mode = "http://{}.fang.ke.com/loupan/pg{}/"
        # 需爬取的城市
        self.cities = ["cd", "sh", "bj"]
        # 每個城市爬取的頁數(shù)
        self.total_pages = 20
        # 讓爬蟲程序隨機休眠5-10秒
        self.sleep = (5, 10)
        # 網(wǎng)頁下載保存根目錄
        self.save_path = save_path
        # 設(shè)置用戶代理,是爬蟲程序偽裝成瀏覽器
        self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36"}
        # 代理IP的信息
        self.proxies = [
            {"https": "123.163.67.50:8118"},
            {"https": "58.56.149.198:53281"},
            {"https": "14.115.186.161:8118"}
        ]

        # 創(chuàng)建保存目錄
        if not os.path.exists(self.save_path):
            os.makedirs(self.save_path)
   def crawl(self):
        """
        執(zhí)行爬取任務(wù)
        :return: None
        """

該處使用的url網(wǎng)絡(luò)請求的數(shù)據(jù)。

3.隨機選擇一個ip地址構(gòu)建代理服務(wù)器

 for city in self.cities:
            print("正在爬取的城市:", city)
            # 每個城市的網(wǎng)頁用單獨的目錄存放
            path = os.path.join(self.save_path, city)
            if not os.path.exists(path):
                os.makedirs(path)

            for page in range(1, self.total_pages+1):
                # 構(gòu)建完整的url
                url = self.url_mode.format(city, page)
                # 構(gòu)建Request對象, 將url和請求頭放入對象中
                request = urllib.request.Request(url, headers=self.headers)

                # 隨機選擇一個代理IP
                proxy = random.choice(self.proxies)
                # 構(gòu)建代理服務(wù)器處理器
                proxy_handler = urllib.request.ProxyHandler(proxy)
                # 構(gòu)建opener
                opener = urllib.request.build_opener(proxy_handler)
                # 使用構(gòu)建的opener打開網(wǎng)頁
                response = opener.open(request)
                html = response.read().decode("utf-8")
                # 網(wǎng)頁保存文件名(包含路徑)
                filename = os.path.join(path, str(page)+".html")

                # 保存網(wǎng)頁
                self.save(html, filename)
                print("第%d頁保存成功!" % page)

                # 隨機休眠
                sleep_time = random.randint(self.sleep[0], self.sleep[1])
                time.sleep(sleep_time)

該處除隨機選擇ip地址以外還會限制爬取數(shù)據(jù)的速度,避免暴力爬取。

4.運行代碼

def save(self, html, filename):
        """
        保存下載的網(wǎng)頁
        :param html: 網(wǎng)頁內(nèi)容
        :param filename: 保存的文件名
        :return:
        """

        f = open(filename, 'w', encoding="utf-8")
        f.write(html)
        f.close()

    def parse(self):
        """
        解析網(wǎng)頁數(shù)據(jù)
        :return:
        """
        pass

if __name__ == "__main__":
    spider = BeikeSpider()
    spider.crawl()

在這里插入圖片描述

運行結(jié)果就會這樣,會保存在你的文件夾中。

總結(jié)

這里對文章進(jìn)行總結(jié):今天分析這波代碼目的是為了讓大家清晰明亮的了解python爬蟲的運作,和大家一起學(xué)習(xí)
以上就是今天要講的內(nèi)容,本文僅僅簡單介紹了pandas的使用,而urllib.request提供了大量能使我們快速便捷地爬取數(shù)據(jù)。

相關(guān)文章

  • numpy.concatenate函數(shù)用法詳解

    numpy.concatenate函數(shù)用法詳解

    本文主要介紹了numpy.concatenate函數(shù)用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • linux系統(tǒng)下pip升級報錯的解決方法

    linux系統(tǒng)下pip升級報錯的解決方法

    這篇文章主要給大家介紹了關(guān)于linux系統(tǒng)下pip升級報錯的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python四大金剛之字典詳解

    Python四大金剛之字典詳解

    這篇文章主要介紹了Python的字典,小編覺得這篇文章寫的還不錯,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-10-10
  • Python 中的 import 機制之實現(xiàn)遠(yuǎn)程導(dǎo)入模塊

    Python 中的 import 機制之實現(xiàn)遠(yuǎn)程導(dǎo)入模塊

    模塊導(dǎo)入( import ),是指在一個模塊中使用另一個模塊的代碼的操作,它有利于代碼的復(fù)用。這篇文章主要介紹了Python 的 import 機制:實現(xiàn)遠(yuǎn)程導(dǎo)入模塊,需要的朋友可以參考下
    2019-10-10
  • Python中檢查字符串是否僅包含字母的方法詳解

    Python中檢查字符串是否僅包含字母的方法詳解

    這篇文章主要為大家詳細(xì)介紹了Python中的多種方法來檢查字符串是否只由字母組成,以及它們的應(yīng)用場景和優(yōu)劣,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • 利用matplotlib實現(xiàn)兩張子圖分別畫函數(shù)圖

    利用matplotlib實現(xiàn)兩張子圖分別畫函數(shù)圖

    這篇文章主要介紹了利用matplotlib實現(xiàn)兩張子圖分別畫函數(shù)圖問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 對pandas中apply函數(shù)的用法詳解

    對pandas中apply函數(shù)的用法詳解

    下面小編就為大家分享一篇對pandas中apply函數(shù)的用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python檢查判斷一個數(shù)是不是另一個數(shù)的整數(shù)次冪實例深究

    Python檢查判斷一個數(shù)是不是另一個數(shù)的整數(shù)次冪實例深究

    在數(shù)學(xué)和計算中,確定一個數(shù)是否為另一個數(shù)的整數(shù)次冪是一個常見而重要的問題,例如,我們可能需要判斷一個數(shù)是否是某個數(shù)的平方、立方或其他冪次,本文將探討在Python中如何實現(xiàn)這一功能,通過數(shù)學(xué)方法和算法檢查一個數(shù)是否是另一個數(shù)的整數(shù)次冪
    2023-12-12
  • Manjaro、pip、conda更換國內(nèi)源的方法

    Manjaro、pip、conda更換國內(nèi)源的方法

    這篇文章主要介紹了Manjaro、pip、conda更換國內(nèi)源的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 學(xué)習(xí)Python能用來做什么的問題

    學(xué)習(xí)Python能用來做什么的問題

    這篇文章主要介紹了關(guān)于Python能用來做什么的問題,如果你想學(xué)Python,或者你剛開始學(xué)習(xí)Python,那么你可能會問:我能用Python做什么?下面就讓我們一起來看看吧
    2023-04-04

最新評論

监利县| 洛南县| 桑植县| 南靖县| 德钦县| 和顺县| 威宁| 休宁县| 曲阳县| 巴马| 乌拉特前旗| 蚌埠市| 荆州市| 土默特左旗| 伊宁县| 罗甸县| 仪陇县| 方城县| 潞城市| 当阳市| 西和县| 儋州市| 通许县| 陇西县| 潮州市| 通州市| 汉沽区| 山东省| 大兴区| 巴彦淖尔市| 潮州市| 巫山县| 静宁县| 阳信县| 资中县| 勐海县| 大荔县| 新干县| 凤冈县| 富源县| 黑龙江省|