婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > python 爬取華為應(yīng)用市場評論

python 爬取華為應(yīng)用市場評論

熱門標簽:佛山400電話辦理 市場上的電銷機器人 朝陽手機外呼系統(tǒng) 儋州電話機器人 小蘇云呼電話機器人 北京電銷外呼系統(tǒng)加盟 北瀚ai電銷機器人官網(wǎng)手機版 地圖標注面積 所得系統(tǒng)電梯怎樣主板設(shè)置外呼

代碼分享

整個項目我放在了github上,在python3.7下可以正常使用,如果有什么問題歡迎大家指正。

github項目地址:https://github.com/LSY-C/scrapy_hauweiappstore_comment

分別爬取的一些應(yīng)用信息以及應(yīng)用的評論信息,數(shù)據(jù)結(jié)構(gòu)如下:

一、安裝并創(chuàng)建Scrapy項目

Scrapy官方文檔:https://docs.scrapy.org/en/latest/intro/install.html

Scrapy是一個比較好用的python爬蟲框架,官方文檔寫得也比較詳細。可以直接運行以下命令安裝:

pip install Scrapy

安裝完畢后,需要創(chuàng)建Scrapy項目,相當于是一個爬蟲項目框架,在想要放置項目的地方打開命令行并輸入以下命令會自動創(chuàng)建一個名為[project_name]的文件夾,比如我這里的[project_name]是appstore,文件夾中會自動生成的一些文件。

scrapy startproject appstore
  • appstore/scrapy.cfg中包含了用于啟動爬蟲的一些基礎(chǔ)配置,一般不用管它。
  • appstore/appstore/items.py:定義了爬取到的數(shù)據(jù)格式類,在這里面創(chuàng)建類來存放爬取到的數(shù)據(jù)的item格式。
  • appstore/appstore/middlewares.py:定義了爬蟲中間鍵的一些行為,我一般也不會去動它。
  • appstore/appstore/pipelines.py:定義了爬取到item后對其進行的處理。
  • appstore/appstore/settings.py:是爬蟲配置文件。
  • appstore/appstore/spiders/:這個目錄下存放的是爬蟲,也就是向網(wǎng)頁發(fā)送請求并受到應(yīng)答然后進行數(shù)據(jù)處理的過程。

二、爬取應(yīng)用市場評論過程

爬取網(wǎng)頁信息有兩個常用的方法:

  • 直接通過xpath解析html文件
  • 依據(jù)特定格式構(gòu)造請求獲取json數(shù)據(jù)進行解析

顯然前者更簡單方便一些,但是現(xiàn)在許多網(wǎng)頁都是動態(tài)的,所以后者泛用性更強一些,這里我爬取華為應(yīng)用市場上所有應(yīng)用的評論信息主要使用的是后面一種方法。

1. Scrapy爬蟲運行流程

首先需要大致了解Scrapy的爬蟲是如何運作的,分為以下幾個步驟:

  • Step1: 在項目的spiders文件夾中新建一個.py文件,比如huawei.py,一般來說每一個文件代表一個爬蟲,也就是對某一個網(wǎng)頁的爬取策略。
  • Step2: 創(chuàng)建一個類繼承自scrapy.Spider,類中至少需要有name、allowed_domain、start_urls變量以及一個函數(shù)parse(self)。其中name是此爬蟲的唯一標識,之后啟動時通過指定name來判斷啟動哪個爬蟲(因為spiders文件夾中可能包含多個爬蟲文件);allowed_domain用來指定當前爬蟲可以訪問的主域名;start_urls用來指定首先獲取的頁面,而此獲取結(jié)果將會交由parse函數(shù)進行處理。每個爬蟲中的處理函數(shù)可能有很多個,命名格式一般是parse_xxx之類的,用來處理多級頁面,比如parse處理完主頁面之后構(gòu)造新的請求獲取二級頁面信息并通過parse_second進行處理,但不管怎么樣都會包含一個parse函數(shù)。
import scrapy
class HuaWei(scrapy.Spider):
    name = "huawei"
    allowed_domains = ['appstore.huawei.com', 'web-drcn.hispace.dbankcloud.cn']
    start_urls = [
        'https://web-drcn.hispace.dbankcloud.cn/uowap/index?method=internal.getTemplateserviceType=20zone=locale=zh']

    def parse(self, response):
    	pass
  • step3: 爬蟲編寫好之后,在項目根目錄(也就是scrapy.cfg文件的同級目錄)打開命令行,并輸入以下命令啟動爬蟲:
scrapy crawl hauwei

2. 頁面分析

首先,通過瀏覽器訪問應(yīng)用市場,分析一下想要爬取網(wǎng)頁的基本信息,這里我想要爬取應(yīng)用市場中所有應(yīng)用的評論,所以首先需要進入到所有應(yīng)用的詳細界面,然后在詳細界面中展開評論進行爬取,基本的思路是:對每一個分類–>對每一個子分類–>展開每一個應(yīng)用–>獲取應(yīng)用全部評論。

爬取的初始頁面是https://appgallery.huawei.com/#/Apps,瀏覽器中使用F12啟動開發(fā)者模式,調(diào)試網(wǎng)頁前端代碼,我們希望的是能夠找到頁面排版的某些規(guī)律。

頁面分析過程一

我們發(fā)現(xiàn)不管在應(yīng)用分類的選項卡中選擇哪一個分類或是子分類,url都不會變。也就是說,選擇分類后顯示對應(yīng)的應(yīng)用列表這一功能是動態(tài)實現(xiàn)的,我們沒辦法通過抓取html中的信息來獲取不同分類的應(yīng)用列表,那么我們只能通過自己構(gòu)造請求獲取json數(shù)據(jù)的方式爬取信息。
首先,打開調(diào)試窗口中的Network選項卡來分析獲取不同分類應(yīng)用列表時的網(wǎng)絡(luò)數(shù)據(jù)包:

除了第一個數(shù)據(jù)包以外,后面的都是獲取應(yīng)用圖標數(shù)據(jù),也就是說第一個數(shù)據(jù)包里面就包含了應(yīng)用的其他數(shù)據(jù),查看此數(shù)據(jù)包中的request_url為:

https://web-drcn.hispace.dbankcloud.cn/uowap/index
?method=internal.getTabDetail
serviceType=20
reqPageNum=1
uri=8e62cf6d238c4abdb892b400ff072f43
maxResults=25
zone=
locale=zh

我們直接在瀏覽器中訪問此url,可以得到一個json文件,分析后發(fā)現(xiàn)此json文件中包含了列表中應(yīng)用的信息。點擊不同的分類、子分類,獲取不同的request_url,我們發(fā)現(xiàn),每一個子分類的request_url都只有uri字段不一樣,且默認情況都只顯示第1頁的25個應(yīng)用。也就是說我們以此request_url為模板,修改uri字段實現(xiàn)獲取不同類別應(yīng)用列表,修改reqPageNum字段獲取列表中的多頁應(yīng)用。

頁面分析過程二

手動點進每一個應(yīng)用的詳細界面時,我們發(fā)現(xiàn),不同應(yīng)用的詳細界面的url只有最后的定位有不同,比如騰訊視頻與優(yōu)酷視頻這兩個應(yīng)用詳細界面的url分別是:

多觀察幾個應(yīng)用就會發(fā)現(xiàn)最后的那一串代碼應(yīng)該是類似于應(yīng)用唯一標識符一樣的東西。而在上一步中,我們可以發(fā)現(xiàn)在獲取的每個應(yīng)用信息中包含能夠找到這些標識符(‘a(chǎn)ppid'鍵的值),于是我在這里嘗試直接以這種格式構(gòu)造url請求獲取頁面,但是失敗了,猜測可能是頁面重定向的問題,沒辦法,只能按部就班地通過其它方式繼續(xù)分析。
通過F12查看頁面排版,每一個app卡片中雖然有app名稱以及一些其他信息,但是找不到app詳細頁面的鏈接,因為獲取應(yīng)用詳細信息功能被寫成了使用js動態(tài)獲取的,因此我們沒辦法直接從html界面中獲取,所以依舊采用構(gòu)造request_url的方法獲取json數(shù)據(jù)。

與分析過程一類似,我們可以獲取以下的request_url:

https://web-drcn.hispace.dbankcloud.cn/uowap/index
?method=internal.getTabDetail
serviceType=20
reqPageNum=1
maxResults=25
uri=app%7CC174391
shareTo=
currentUrl=https%253A%252F%252Fappgallery.huawei.com%252F%2523%252Fapp%252FC174391
accessId=
appid=C174391
zone=
locale=zh

通過此request_url獲取的json中包含了應(yīng)用的詳細信息,實際上通過測試,其中的reqPageNum、maxResults、shareTo、currentUrl、accessId、appid、zone、locale字段都是不需要的,而又發(fā)現(xiàn)uri字段中后面的“C174391”是當前應(yīng)用的appid,也就是說我們只需要修改uri字段的“app%7C”后面的字符串為不同應(yīng)用的appid(可以在分析過程一中的json文件里獲取),就可以獲取不同應(yīng)用的詳細信息。

頁面分析過程三

有了上面兩次分析的經(jīng)驗,我們繼續(xù)來爬取每個應(yīng)用的評論數(shù)據(jù),發(fā)現(xiàn)這些數(shù)據(jù)也是通過js動態(tài)獲取的,于是繼續(xù)分析request_url,格式如下:

https://web-drcn.hispace.dbankcloud.cn/uowap/index
?method=internal.user.commenList3
serviceType=20
reqPageNum=1
maxResults=25
appid=C2002
version=10.0.0
zone=
locale=zh

與之前類似,我們可以通過修改appid字段爬取不同應(yīng)用的評論,通過修改reqPageNum字段爬取多頁評論。

3. 爬蟲實現(xiàn)

整個爬取過程就是:構(gòu)造request_url請求獲取json數(shù)據(jù)–>解析json數(shù)據(jù)–>構(gòu)造新的request_url獲取json數(shù)據(jù)–>…
下面是爬蟲中的一個處理函數(shù),功能是處理每一個應(yīng)用的詳細信息并構(gòu)造獲取評論的request_url發(fā)送新的請求,接下來依次說明其中的關(guān)鍵部分。

def app_parse(self, response):
    """
    解析應(yīng)用,獲取應(yīng)用名稱、描述、資費、版本、開發(fā)者,然后轉(zhuǎn)至appcomment_parse進行處理
    :param resonse:
    :return:
    """
    appid = response.meta['appid']
    app_json = json.loads(response.text)
    Name = app_json.get('layoutData')[0].get('dataList')[0].get('name')
    Star = app_json.get('layoutData')[0].get('dataList')[0].get('intro')
    Downloads = app_json.get('layoutData')[0].get('dataList')[0].get('stars')
    Price = app_json.get('layoutData')[3].get('dataList')[0].get('tariffDesc')
    Version = app_json.get('layoutData')[3].get('dataList')[0].get('version')
    Developer = app_json.get('layoutData')[3].get('dataList')[0].get('developer')
    Description = app_json.get('layoutData')[7].get('dataList')[0].get('appIntro').replace('\n', '')
    AppData = AppItem(
        AppId=appid,
        AppName=Name,
        AppDesc=Description,
        AppPrice=Price,
        AppVersion=Version,
        AppDeveloper=Developer,
        AppStar=Star,
        AppDownloads=Downloads
    )
    yield AppData
    for pagenum in range(1, 20):
        request_url = "https://web-drcn.hispace.dbankcloud.cn/uowap/index?method=internal.user.commenList3serviceType=20reqPageNum={}maxResults=25appid={}version=10.0.0zone=locale=zh".format(
            pagenum, appid)
        yield scrapy.Request(url=request_url, callback=self.appcomment_parse, meta={'appid': appid})

解析json并構(gòu)造請求

第8行中通過json.loads將響應(yīng)解析為json格式,并在后續(xù)使用鍵值與index訪問里面的信息。

將數(shù)據(jù)保存在items中

在items.py文件中定義好Item類之后,可以在此新建一個Item對象,并在填入相應(yīng)的值,將此item返回交由pipeline.py進行處理。

# items.py
class AppItem(scrapy.Item):
    AppId = scrapy.Field()
    AppName = scrapy.Field()
    AppDesc = scrapy.Field()
    AppPrice = scrapy.Field()
    AppVersion = scrapy.Field()
    AppDeveloper = scrapy.Field()
    AppStar = scrapy.Field()
    AppDownloads = scrapy.Field()

yield是python中的一個關(guān)鍵詞,與return類似,會讓函數(shù)返回此關(guān)鍵詞修飾的表達式值,與return不同的是,yield在返回一個值后會繼續(xù)執(zhí)行后面的代碼,而return不會。

構(gòu)造新的請求

在最后一行中針對所有評論列表構(gòu)造新的request_url以獲取評論信息,并通過scrapy.Request發(fā)送請求,其中callback指定用于處理此請求響應(yīng)的處理函數(shù),而meta中包含了想要傳遞給callback函數(shù)的信息。

item數(shù)據(jù)的處理

在爬取數(shù)據(jù)的過程中,處理函數(shù)會實時將不同的item返回并交由pipeline進行處理,此時需要在pipeline.py中指定如何處理這些item,比如在此我把數(shù)據(jù)全都記錄入csv表格中。pipeline類中必須定義process_item函數(shù)來處理每一個item,而__init__與close_spider都是可選的。

class AppStorePipeline:
    def __init__(self):
        self.app_list = []
        self.comment_list = []

    def process_item(self, item, spider):	# 接收到item時調(diào)用的函數(shù)
        if isinstance(item, AppItem):
            self.app_list.append(dict(item))
        elif isinstance(item, CommentItem):
            self.comment_list.append(dict(item))
        return item

    def close_spider(self, spider):			# 當爬蟲關(guān)閉時調(diào)用的函數(shù)
        df_app = pd.DataFrame(self.app_list)
        df_comment = pd.DataFrame(self.comment_list)
        df_app.to_csv('app_info.csv')
        df_comment.to_csv('comment_info.csv')

以上就是python 爬取華為應(yīng)用市場評論的詳細內(nèi)容,更多關(guān)于python 爬取華為應(yīng)用市場的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • python 爬取京東指定商品評論并進行情感分析
  • python爬取晉江文學城小說評論(情緒分析)
  • 利用Python網(wǎng)絡(luò)爬蟲爬取各大音樂評論的代碼
  • 詳解用python實現(xiàn)爬取CSDN熱門評論URL并存入redis
  • python 利用百度API進行淘寶評論關(guān)鍵詞提取
  • python 爬取騰訊視頻評論的實現(xiàn)步驟
  • python爬取微博評論的實例講解
  • python實現(xiàn)模擬器爬取抖音評論數(shù)據(jù)的示例代碼
  • 如何基于Python爬取隱秘的角落評論
  • Python實現(xiàn)爬取并分析電商評論
  • python 爬取馬蜂窩景點翻頁文字評論的實現(xiàn)
  • 用Python爬取QQ音樂評論并制成詞云圖的實例

標簽:江蘇 云南 酒泉 寧夏 龍巖 金融催收 商丘 定西

巨人網(wǎng)絡(luò)通訊聲明:本文標題《python 爬取華為應(yīng)用市場評論》,本文關(guān)鍵詞  python,爬取,華為,應(yīng)用,市場,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python 爬取華為應(yīng)用市場評論》相關(guān)的同類信息!
  • 本頁收集關(guān)于python 爬取華為應(yīng)用市場評論的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产日产欧美一区二区三区| 丰满岳乱妇一区二区三区| 玉足女爽爽91| 久久精品亚洲麻豆av一区二区 | 一区二区不卡在线播放 | 欧美大片免费久久精品三p| 久久久99精品免费观看| 日本成人在线一区| 欧美色精品在线视频| 国产精品国产自产拍在线| 欧美bbbbb| 在线播放视频一区| 亚洲国产aⅴ天堂久久| 色一区在线观看| 亚洲天堂免费看| www.激情成人| 中文字幕一区免费在线观看| 日韩精品成人一区二区三区| 青青草成人在线观看| 欧美午夜理伦三级在线观看| 亚洲欧洲av色图| 成人一区二区三区中文字幕| 国产亚洲精品7777| 国产福利精品一区| 国产精品色一区二区三区| 高清在线不卡av| 国产精品美女久久久久久| 成人免费视频app| 国产精品三级在线观看| 99久久伊人久久99| 亚洲人成在线播放网站岛国| 91成人免费在线视频| 亚洲一二三区不卡| 91精品欧美一区二区三区综合在| 无码av免费一区二区三区试看| 欧美日韩午夜在线| 麻豆一区二区三区| 久久久久久**毛片大全| 成人综合婷婷国产精品久久蜜臀| 国产精品国模大尺度视频| 色一情一乱一乱一91av| 亚洲综合图片区| 日韩三级精品电影久久久 | 日本三级亚洲精品| 91麻豆精品国产91久久久使用方法| 日韩电影在线免费看| 精品少妇一区二区三区免费观看 | 91精品国产福利在线观看| 乱中年女人伦av一区二区| 国产亚洲婷婷免费| 在线看国产一区| 日本aⅴ亚洲精品中文乱码| 国产日韩欧美制服另类| 一本色道亚洲精品aⅴ| 日本女优在线视频一区二区| 国产日韩欧美亚洲| 91国模大尺度私拍在线视频| 蜜臂av日日欢夜夜爽一区| 国产精品久久久久久亚洲伦| 欧美日韩亚洲综合| 国产成人av电影在线播放| 一区二区三区高清不卡| 2024国产精品| 欧洲在线/亚洲| 国产成a人亚洲| 亚洲小少妇裸体bbw| 国产女人aaa级久久久级| 欧美精品视频www在线观看| 国产麻豆欧美日韩一区| 亚洲高清视频在线| 国产丝袜美腿一区二区三区| 欧美日韩在线播| 成人免费三级在线| 美国av一区二区| 一级做a爱片久久| 欧美极品另类videosde| 日韩一区二区免费在线观看| 91丨国产丨九色丨pron| 国内精品在线播放| 日韩中文字幕91| 亚洲欧美区自拍先锋| 国产欧美日韩不卡免费| 欧美电影免费提供在线观看| 在线观看一区不卡| hitomi一区二区三区精品| 国模大尺度一区二区三区| 丝袜亚洲另类丝袜在线| 一级女性全黄久久生活片免费| 日本一区二区三级电影在线观看 | 国产精品乱码久久久久久| 日韩欧美国产精品| 欧美日韩国产在线播放网站| 一本久久a久久免费精品不卡| 国产成人啪午夜精品网站男同| 久久成人羞羞网站| 另类小说图片综合网| 日韩激情视频在线观看| 亚洲观看高清完整版在线观看| 亚洲免费观看高清完整版在线观看熊| 中国色在线观看另类| 国产喂奶挤奶一区二区三区| 久久久久久影视| 久久久精品国产99久久精品芒果| 精品国产一区二区亚洲人成毛片 | 91免费国产在线观看| 成人黄动漫网站免费app| 国产精品888| 福利一区在线观看| 丁香婷婷综合网| jlzzjlzz欧美大全| 91网站最新地址| 欧美综合一区二区三区| 欧美日韩亚洲另类| 91麻豆精品久久久久蜜臀| 日韩精品一区二区三区视频| 精品国产精品网麻豆系列| 久久精品无码一区二区三区| 国产亚洲精品中文字幕| 国产精品免费久久久久| |精品福利一区二区三区| 亚洲一区二区3| 久久精品国产成人一区二区三区 | 91丝袜国产在线播放| 91国模大尺度私拍在线视频| 欧美伦理电影网| 精品国产乱码久久久久久夜甘婷婷| 欧美不卡视频一区| 久久精品在这里| 亚洲特级片在线| 日本亚洲电影天堂| 国产精品亚洲а∨天堂免在线| fc2成人免费人成在线观看播放 | 亚洲精品高清在线| 日韩av中文字幕一区二区| 国产麻豆精品theporn| 成人sese在线| 欧美老女人第四色| 亚洲国产精品黑人久久久| 亚洲国产成人av网| 国产麻豆午夜三级精品| 在线免费观看日韩欧美| 日韩欧美中文字幕一区| 中文字幕视频一区| 奇米色777欧美一区二区| 国产69精品久久99不卡| 欧美日本乱大交xxxxx| 久久综合久久综合亚洲| 亚洲一二三四在线观看| 狠狠色丁香婷婷综合| 在线观看国产一区二区| 久久久噜噜噜久噜久久综合| 亚洲v日本v欧美v久久精品| 国产一区二区免费在线| 欧美丝袜自拍制服另类| 久久这里只有精品视频网| 亚洲成人av中文| 91蜜桃婷婷狠狠久久综合9色| 精品日韩一区二区| 亚洲综合成人网| 成人aa视频在线观看| 精品国产麻豆免费人成网站| 亚洲国产成人porn| 成人综合日日夜夜| 久久久影院官网| 奇米影视7777精品一区二区| 在线观看一区二区精品视频| 欧美韩国日本一区| 国产一区二区不卡在线 | 国产麻豆午夜三级精品| 555www色欧美视频| 亚洲综合一区在线| 成人激情午夜影院| 久久精品视频在线看| 精品一区二区三区免费毛片爱 | 日本韩国视频一区二区| 国产精品国产自产拍高清av | 韩国三级中文字幕hd久久精品| 欧美色视频在线观看| 一区二区三区免费在线观看| 97超碰欧美中文字幕| 国产精品久久久久久久浪潮网站| 国产福利精品导航| 久久亚洲捆绑美女| 国产酒店精品激情| 久久久久久久久久久黄色| 国产精品一区二区在线看| 久久综合九色综合97婷婷女人 | 午夜精品福利一区二区三区av| 在线观看www91| 久久青草欧美一区二区三区| 久久av资源网| 精品粉嫩超白一线天av| 国内精品自线一区二区三区视频| 日韩久久精品一区| 国产自产高清不卡| 国产性做久久久久久| 从欧美一区二区三区| 亚洲少妇屁股交4| 91黄色免费网站| 五月天视频一区|