真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python爬蟲新手教程:手機APP數(shù)據(jù)抓取pyspider-創(chuàng)新互聯(lián)

1. 手機APP數(shù)據(jù)----寫在前面

繼續(xù)練習pyspider的使用,最近搜索了一些這個框架的一些使用技巧,發(fā)現(xiàn)文檔竟然挺難理解的,不過使用起來暫時沒有障礙,估摸著,要在寫個5篇左右關于這個框架的教程。今天教程中增加了圖片的處理,你可以重點學習一下。

在成都做網(wǎng)站、成都網(wǎng)站設計中從網(wǎng)站色彩、結(jié)構(gòu)布局、欄目設置、關鍵詞群組等細微處著手,突出企業(yè)的產(chǎn)品/服務/品牌,幫助企業(yè)鎖定精準用戶,提高在線咨詢和轉(zhuǎn)化,使成都網(wǎng)站營銷成為有效果、有回報的無錫營銷推廣。成都創(chuàng)新互聯(lián)公司專業(yè)成都網(wǎng)站建設十余年了,客戶滿意度97.8%,歡迎成都創(chuàng)新互聯(lián)客戶聯(lián)系。

2. 手機APP數(shù)據(jù)----頁面分析

咱要爬取的網(wǎng)站是 http://www.liqucn.com/rj/new/ 這個網(wǎng)站我看了一下,有大概20000頁,每頁數(shù)據(jù)是9個,數(shù)據(jù)量大概在180000左右,可以抓取下來,后面做數(shù)據(jù)分析使用,也可以練習優(yōu)化數(shù)據(jù)庫。

Python爬蟲新手教程:手機APP數(shù)據(jù)抓取 pyspider

網(wǎng)站基本沒有反爬措施,上去爬就可以,略微控制一下并發(fā),畢竟不要給別人服務器太大的壓力。

頁面經(jīng)過分析之后,可以看到它是基于URL進行的分頁,這就簡單了,我們先通過首頁獲取總頁碼,然后批量生成所有頁碼即可

http://www.liqucn.com/rj/new/?page=1
http://www.liqucn.com/rj/new/?page=2
http://www.liqucn.com/rj/new/?page=3
http://www.liqucn.com/rj/new/?page=4

獲取總頁碼的代碼

class Handler(BaseHandler):
    crawl_config = {
    }

    @every(minutes=24 * 60)
    def on_start(self):
        self.crawl('http://www.liqucn.com/rj/new/?page=1', callback=self.index_page)

    @config(age=10 * 24 * 60 * 60)
    def index_page(self, response):
        # 獲取最后一頁的頁碼
        totle = int(response.doc(".current").text())
        for page in range(1,totle+1):
            self.crawl('http://www.liqucn.com/rj/new/?page={}'.format(page), callback=self.detail_page)
Python資源分享qun 784758214 ,內(nèi)有安裝包,PDF,學習視頻,這里是Python學習者的聚集地,零基礎,進階,都歡迎

然后copy一段官方中文翻譯,過來,時刻提醒自己

代碼簡單分析:

def on_start(self) 方法是入口代碼。當在web控制臺點擊run按鈕時會執(zhí)行此方法。

self.crawl(url, callback=self.index_page)這個方法是調(diào)用API生成一個新的爬取任務,
            這個任務被添加到待抓取隊列。
def index_page(self, response) 這個方法獲取一個Response對象。 
            response.doc是pyquery對象的一個擴展方法。pyquery是一個類似于jQuery的對象選擇器。

def detail_page(self, response)返回一個結(jié)果集對象。
            這個結(jié)果默認會被添加到resultdb數(shù)據(jù)庫(如果啟動時沒有指定數(shù)據(jù)庫默認調(diào)用sqlite數(shù)據(jù)庫)。你也可以重寫
            on_result(self,result)方法來指定保存位置。

更多知識:
@every(minutes=24*60, seconds=0) 這個設置是告訴scheduler(調(diào)度器)on_start方法每天執(zhí)行一次。
@config(age=10 * 24 * 60 * 60) 這個設置告訴scheduler(調(diào)度器)這個request(請求)過期時間是10天,
    10天內(nèi)再遇到這個請求直接忽略。這個參數(shù)也可以在self.crawl(url, age=10*24*60*60) 和 crawl_config中設置。
@config(priority=2) 這個是優(yōu)先級設置。數(shù)字越大越先執(zhí)行。

分頁數(shù)據(jù)已經(jīng)添加到待爬取隊列中去了,下面開始分析爬取到的數(shù)據(jù),這個在detail_page函數(shù)實現(xiàn)

    @config(priority=2)
    def detail_page(self, response):
        docs = response.doc(".tip_blist li").items()
        dicts = []
        for item in docs:
            title = item(".tip_list>span>a").text()
            pubdate = item(".tip_list>i:eq(0)").text()
            info = item(".tip_list>i:eq(1)").text()
            # 手機類型
            category = info.split(":")[1]
            size = info.split("/")
            if len(size) == 2:
                size = size[1]
            else:
                size = "0MB"
            app_type = item("p").text()
            mobile_type = item("h4>a").text()
            # 保存數(shù)據(jù)

            # 建立圖片下載渠道

            img_url = item(".tip_list>a>img").attr("src")
            # 獲取文件名字
            filename = img_url[img_url.rindex("/")+1:]
            # 添加軟件logo圖片下載地址
            self.crawl(img_url,callback=self.save_img,save={"filename":filename},validate_cert=False)
            dicts.append({
                "title":title,
                "pubdate":pubdate,
                "category":category,
                "size":size,
                "app_type":app_type,
                "mobile_type":mobile_type

                })
        return dicts
Python資源分享qun 784758214 ,內(nèi)有安裝包,PDF,學習視頻,這里是Python學習者的聚集地,零基礎,進階,都歡迎

數(shù)據(jù)已經(jīng)集中返回,我們重寫on_result來保存數(shù)據(jù)到mongodb中,在編寫以前,先把鏈接mongodb的相關內(nèi)容編寫完畢

import os

import pymongo
import pandas as pd
import numpy as np
import time
import json

DATABASE_IP = '127.0.0.1'
DATABASE_PORT = 27017
DATABASE_NAME = 'sun'
client = pymongo.MongoClient(DATABASE_IP,DATABASE_PORT)
db = client.sun
db.authenticate("dba", "dba")
collection = db.liqu  # 準備插入數(shù)據(jù)

數(shù)據(jù)存儲

    def on_result(self,result):
        if result:
            self.save_to_mongo(result)            

    def save_to_mongo(self,result):
        df = pd.DataFrame(result)
        #print(df)
        content = json.loads(df.T.to_json()).values()
        if collection.insert_many(content):
            print('存儲到 mongondb 成功')

獲取到的數(shù)據(jù),如下表所示。到此為止,咱已經(jīng)完成大部分的工作了,最后把圖片下載完善一下,就收工啦!

Python爬蟲新手教程:手機APP數(shù)據(jù)抓取 pyspider

Python爬蟲新手教程:手機APP數(shù)據(jù)抓取 pyspider

3. 手機APP數(shù)據(jù)----圖片存儲

圖片下載,其實就是保存網(wǎng)絡圖片到一個地址即可

    def save_img(self,response):
        content = response.content
        file_name = response.save["filename"]
        #創(chuàng)建文件夾(如果不存在)
        if not os.path.exists(DIR_PATH):                         
            os.makedirs(DIR_PATH) 

        file_path = DIR_PATH + "/" + file_name

        with open(file_path,"wb" ) as f:
            f.write(content)
Python資源分享qun 784758214 ,內(nèi)有安裝包,PDF,學習視頻,這里是Python學習者的聚集地,零基礎,進階,都歡迎

到此為止,任務完成,保存之后,調(diào)整爬蟲的抓取速度,點擊run,數(shù)據(jù)跑起來~~~~

Python爬蟲新手教程:手機APP數(shù)據(jù)抓取 pyspider

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


當前標題:Python爬蟲新手教程:手機APP數(shù)據(jù)抓取pyspider-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://weahome.cn/article/djshch.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部