1. 程式人生 > >Python爬蟲新手教程:手機APP資料抓取 pyspider

Python爬蟲新手教程:手機APP資料抓取 pyspider

1. 手機APP資料----寫在前面

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

2. 手機APP資料----頁面分析

咱要爬取的網站是 http://www.liqucn.com/rj/new/ 這個網站我看了一下,有大概20000頁,每頁資料是9個,資料量大概在180000左右,可以抓取下來,後面做資料分析使用,也可以練習優化資料庫。

網站基本沒有反爬措施,上去爬就可以,略微控制一下併發,畢竟不要給別人伺服器太大的壓力。

頁面經過分析之後,可以看到它是基於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 ,內有安裝包,PDF,學習視訊,這裡是Python學習者的聚集地,零基礎,進階,都歡迎

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

程式碼簡單分析:

def on_start(self) 方法是入口程式碼。當在web控制檯點選run按鈕時會執行此方法。

self.crawl(url, callback=self.index_page)這個方法是呼叫API生成一個新的爬取任務,
            這個任務被新增到待抓取佇列。
def index_page(self, response) 這個方法獲取一個Response物件。 
            response.doc是pyquery物件的一個擴充套件方法。pyquery是一個類似於jQuery的物件選擇器。

def detail_page(self, response)返回一個結果集物件。
            這個結果預設會被新增到resultdb資料庫(如果啟動時沒有指定資料庫預設呼叫sqlite資料庫)。你也可以重寫
            on_result(self,result)方法來指定儲存位置。

更多知識:
@every(minutes=24*60, seconds=0) 這個設定是告訴scheduler(排程器)on_start方法每天執行一次。
@config(age=10 * 24 * 60 * 60) 這個設定告訴scheduler(排程器)這個request(請求)過期時間是10天,
    10天內再遇到這個請求直接忽略。這個引數也可以在self.crawl(url, age=10*24*60*60) 和 crawl_config中設定。
@config(priority=2) 這個是優先順序設定。數字越大越先執行。

分頁資料已經新增到待爬取佇列中去了,下面開始分析爬取到的資料,這個在detail_page函式實現

    @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("h3>a").text()
            # 儲存資料

            # 建立圖片下載渠道

            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 ,內有安裝包,PDF,學習視訊,這裡是Python學習者的聚集地,零基礎,進階,都歡迎

資料已經集中返回,我們重寫on_result來儲存資料到mongodb中,在編寫以前,先把連結mongodb的相關內容編寫完畢

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  # 準備插入資料

資料儲存

    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 成功')

獲取到的資料,如下表所示。到此為止,咱已經完成大部分的工作了,最後把圖片下載完善一下,就收工啦!

3. 手機APP資料----圖片儲存

圖片下載,其實就是儲存網路圖片到一個地址即可

    def save_img(self,response):
        content = response.content
        file_name = response.save["filename"]
        #建立資料夾(如果不存在)
        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 ,內有安裝包,PDF,學習視訊,這裡是Python學習者的聚集地,零基礎,進階,都歡迎

到此為止,任務完成,儲存之後,調整爬蟲的抓取速度,點選run,資料跑起來~~~~

相關推薦

Python爬蟲新手教程手機APP資料 pyspider

1. 手機APP資料----寫在前面 繼續練習pyspider的使用,最近搜尋了一些這個框架的一些使用技巧,發現文件竟然挺難理解的

Python爬蟲新手教程實戰APP包,抖音的小姐姐等著我!

APP抓包 前面我們瞭解了一些關於 Python 爬蟲的知識,不過都是基於 PC 端瀏覽器網頁中的內容進行爬取。現在手機 App

新手教程如何使用Burpsuite手機APP的HTTPS資料

· 手機已經獲取root許可權· 手機已經成功安裝xposed框架· 電腦一臺2.詳細步驟2.1 在手機上面安裝xposed JustTrustMeJustTrustMe是一個去掉https證書校驗的xposed hook外掛,去掉之後就可以抓取做了證書校驗的app的資料包。JustTrustMe在githu

Python爬蟲新手教程微醫掛號網醫生資料

1. 寫在前面 今天要抓取的一個網站叫做微醫網站,地址為 https://www.guahao.com ,我們將通過python3

Python爬蟲新手教程Python分析了 7 萬款 App,萬萬沒想到

摘要:使用 Scrapy 爬取豌豆莢全網 70,000+ App,並進行探索性分析。 寫在前面:若對資料抓取部分不感興趣,可以直接

Python爬蟲新手教程 知乎文章圖片爬

1. 知乎文章圖片爬取器之二部落格背景 昨天寫了知乎文章圖片爬取器的一部分程式碼,針對知乎問題的答案json進行了資料抓取,部落格

Python爬蟲新手教程了6574篇文章,告訴你產品經理在看什麼!

作為網際網路界的兩個對立的物種,產品汪與程式猿似乎就像一對天生的死對頭;但是在產品開發鏈條上緊密合作的雙方,只有通力合作,才能更好

Python爬蟲入門教程 17-100 部落格資料

寫在前面 寫了一段時間的部落格了,忽然間忘記了,其實部落格頻道的部落格也是可以抓取的,所以我幹了..... 其實這事情挺簡單的,開啟CSDN部落格首頁,他不是有個最新文章麼,這個裡面都是最新發布的文章。 開啟F12抓取一下資料API,很容易就獲取到了他的介面 提取連結長

Python爬蟲視訊教程教你爬QQ音樂資料(實戰處理+資料視覺化)-劉宇宙-專題視訊課程...

Python爬蟲視訊教程:教你爬取QQ音樂資料(實戰處理+資料視覺化)—704人已學習 課程介紹        本視訊課程主要培訓Python爬蟲入門,資料分析及資料視覺化實戰內容,通過本課的學習,您可以在2小時左右掌握Python基礎程式設計的核心內容,實現Python在爬

Python 爬蟲工程師必學——App資料實戰

第1章 課程介紹 介紹課程目標、通過課程能學習到的內容、學會這些技能能做什麼,對公司業務有哪些幫助,對個人有哪些幫助。介紹目前app資料抓取有哪些困難,面臨的挑戰,本實戰課程會利用哪些工具來解決這些問題,以及本實戰課程的特點 ... 1-1 python爬蟲工程師必備技

某課《Python 爬蟲工程師必學 App資料實戰》

第1章 課程介紹 介紹課程目標、通過課程能學習到的內容、學會這些技能能做什麼,對公司業務有哪些幫助,對個人有哪些幫助。介紹目前app資料抓取有哪些困難,面臨的挑戰,本實戰課程會利用哪些工具來解決這些問題,以及本實戰課程的特點 ... 1-1 python爬蟲工程師必備技

Python 爬蟲工程師必學 App資料實戰

第5章 移動端自動化控制工具詳講 本章首先介紹了android開發環境的安裝,為講解uiautomatorviewer工具做準備,android開發環境安裝成功後介紹了uiautomatorviewer工具對app應用介面進行分析,節點定位、xpath編寫 介紹了appium-desktop工具的錄製

Python 爬蟲工程師必學 App資料實戰目前最完整

第1章 課程介紹 介紹課程目標、通過課程能學習到的內容、學會這些技能能做什麼,對公司業務有哪些幫助,對個人有哪些幫助。介紹目前app資料抓取有哪些困難,面臨的挑戰,本實戰課程會利用哪些工具來解決這些問題,以及本實戰課程的特點 ... 1-1 python爬蟲工程師必備技

Python爬蟲入門教程 5-100 27270圖片爬

retrying ont star 都是 ram emp ret afa else 獲取待爬取頁面 今天繼續爬取一個網站,http://www.27270.com/ent/meinvtupian/ 這個網站具備反爬,so我們下載的代碼有些地方處理的也不是很到位,大家重點

Python爬蟲基礎教程,手把手教你爬拉勾網!

一、思路分析: 在之前寫拉勾網的爬蟲的時候,總是得到下面這個結果(真是頭疼),當你看到下面這個結果的時候,也就意味著被反爬了,因為

Python爬蟲實戰專案2 | 動態網站的(爬電影網站的資訊)

1.什麼是動態網站? 動態網站和靜態網站的區別在於,網頁中常常包含JS,CSS等動態效果的內容或者檔案,這些內容也是網頁的有機整體。但對於瀏覽器來說,它是如何處理這些額外的檔案的呢?首先瀏覽器先下載html檔案,然後根據需要,下載JS等額外檔案,它會自動去下載它們,如果我們要爬取這些網頁中的動態

python爬蟲之一 —— 愛鬥圖圖包

前言 最近有點空閒時間,又開始研究python的爬蟲,事實上這幾天已經寫了好幾個爬蟲,也嘗試了用pyspider爬取網頁,慢慢積累,今天和大家分享一個表情包爬蟲。 相信大家都喜歡鬥圖,今天這個爬蟲就是爬取愛鬥圖網站的圖包,資源豐富,內容很多: 步驟 這個網站主要是靜態網頁,

Python-爬蟲-基本庫(requests)使用-貓眼電影Too100榜

spa spi fire tools not agen ext get pytho 1 #抓取貓眼電影,https://maoyan.com/board/4 榜單電影列表 2 import requests 3 import re 4 from requests

Python爬蟲實戰一之使用Beautiful Soup百度招聘資訊並存儲excel檔案

#encoding:utf-8 ''' Created on 2017年7月25日 @author: ******** ''' import urllib2 from bs4 import BeautifulSoup import xlrd,os from xlutils.copy import copy f

Python爬蟲手機APP資料

1、抓取APP資料包     得到超級課程表登入的地址:http://120.55.151.61/V2/StudentSkip/loginCheckV4.action     表單: 表單中包括了使用者名稱和密碼,當然都是加密過了的,還有一個裝置資訊,直接