亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

一、爬蟲是什么?

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

 二、使用步驟

1.引入庫

代碼如下(示例):

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

2.讀入數據

代碼如下 :

# 網址模式
        self.url_mode = "http://{}.fang.ke.com/loupan/pg{}/"
        # 需爬取的城市
        self.cities = ["cd", "sh", "bj"]
        # 每個城市爬取的頁數
        self.total_pages = 20
        # 讓爬蟲程序隨機休眠5-10秒
        self.sleep = (5, 10)
        # 網頁下載保存根目錄
        self.save_path = save_path
        # 設置用戶代理,是爬蟲程序偽裝成瀏覽器
        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í)行爬取任務
        :return: None
        """

該處使用的url網絡請求的數據。

3.隨機選擇一個ip地址構建代理服務器

 for city in self.cities:
            print("正在爬取的城市:", city)
            # 每個城市的網頁用單獨的目錄存放
            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):
                # 構建完整的url
                url = self.url_mode.format(city, page)
                # 構建Request對象, 將url和請求頭放入對象中
                request = urllib.request.Request(url, headers=self.headers)

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

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

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

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

4.運行代碼

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

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

    def parse(self):
        """
        解析網頁數據
        :return:
        """
        pass

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

在這里插入圖片描述

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

總結

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

相關文章

  • Django 路由控制的實現

    Django 路由控制的實現

    這篇文章主要介紹了Django 路由控制的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • 最新2019Pycharm安裝教程 親測

    最新2019Pycharm安裝教程 親測

    這篇文章主要介紹了最新2019Pycharm安裝教程,這篇教程親測試過,本文內容有點長,通過截圖的形式給大家介紹的非常詳細,需要的朋友可以參考下
    2020-02-02
  • 利用Python通過獲取剪切板數據實現百度劃詞搜索功能

    利用Python通過獲取剪切板數據實現百度劃詞搜索功能

    大家是不是嫌棄每次打開百度太麻煩?今天教大家利用Python通過獲取剪切板數據實現百度劃詞搜索功能,用程序直接打開網頁,需要的朋友可以參考下
    2021-06-06
  • matplotlib在python上繪制3D散點圖實例詳解

    matplotlib在python上繪制3D散點圖實例詳解

    這篇文章主要介紹了matplotlib在python上繪制3D散點圖實例詳解,首先介紹了官網的實例,然后分享了本文簡單代碼示例,具有一定借鑒價值,需要的朋友可以了解下。
    2017-12-12
  • Python的輸出格式化和進制轉換介紹

    Python的輸出格式化和進制轉換介紹

    大家好,本篇文章主要講的是Python的輸出格式化和進制轉換介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Python PyQt5實戰(zhàn)項目之查詢器的實現流程詳解

    Python PyQt5實戰(zhàn)項目之查詢器的實現流程詳解

    PyQt5以一套Python模塊的形式來實現功能。它包含了超過620個類,600個方法和函數。它是一個多平臺的工具套件,它可以運行在所有的主流操作系統(tǒng)中,包含Unix,Windows和Mac OS。PyQt5采用雙重許可模式。開發(fā)者可以在GPL和社區(qū)授權之間選擇
    2021-11-11
  • python構建自定義回調函數詳解

    python構建自定義回調函數詳解

    在工作中,回調函數使用的場景是非常多的,下面我們就來通過例子程序來詳細了解利用了Python的屬性機制構建了一個自定義回調函數的使用
    2017-06-06
  • Pyinstaller打包Scrapy項目的實現步驟

    Pyinstaller打包Scrapy項目的實現步驟

    這篇文章主要介紹了Pyinstaller打包Scrapy項目的實現步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • python字符串替換的2種方法

    python字符串替換的2種方法

    python 字符串替換 是python 操作字符串的時候經常會碰到的問題,這里簡單介紹下字符串替換方法
    2014-11-11
  • Python hashlib庫數據安全加密必備指南

    Python hashlib庫數據安全加密必備指南

    這篇文章主要為大家介紹了Python hashlib庫數據安全加密的使用實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01

最新評論