溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python爬取攜程和螞蜂窩的景點(diǎn)評(píng)論數(shù)據(jù)\python爬取攜程評(píng)論數(shù)據(jù)\python旅游網(wǎng)站評(píng)論數(shù)

發(fā)布時(shí)間:2020-07-25 09:53:51 來源:網(wǎng)絡(luò) 閱讀:12845 作者:張大力plus 欄目:大數(shù)據(jù)

本人長(zhǎng)期出售超大量微博數(shù)據(jù)、旅游網(wǎng)站評(píng)論數(shù)據(jù),并提供各種指定數(shù)據(jù)爬取服務(wù),Message to YuboonaZhang@Yahoo.com。同時(shí)歡迎加入社交媒體數(shù)據(jù)交流群:99918768

前言

??為了獲取多源數(shù)據(jù)需要到各個(gè)網(wǎng)站獲取一些景點(diǎn)的評(píng)論信息和圖片,首先選到了攜程和螞蜂窩這兩個(gè)網(wǎng)站,將一些爬取過程記錄下來

攜程

分析數(shù)據(jù)

??首先我們?nèi)y程的鼓浪嶼景點(diǎn)速覽看一下我們要爬取的頁面,大概發(fā)現(xiàn)有幾十個(gè)景點(diǎn),每個(gè)景點(diǎn)的結(jié)構(gòu)應(yīng)該都是差不多的,所以我們選擇第一個(gè)景點(diǎn)進(jìn)去看看具體的頁面應(yīng)該怎么爬取。

python爬取攜程和螞蜂窩的景點(diǎn)評(píng)論數(shù)據(jù)\python爬取攜程評(píng)論數(shù)據(jù)\python旅游網(wǎng)站評(píng)論數(shù)

我們需要的是紅圈的部分,很容易可以知道這個(gè)評(píng)論頁面是動(dòng)態(tài)加載的,所以不能直接用bs4或者正則直接提取元素,我們需要分析一下頁面動(dòng)態(tài)傳輸?shù)慕涌?。打開chrome審查元素,切換到network查看一下傳輸?shù)膬?nèi)容,首先清空內(nèi)容避免干擾,然后點(diǎn)擊下一頁,我們可以得到

python爬取攜程和螞蜂窩的景點(diǎn)評(píng)論數(shù)據(jù)\python爬取攜程評(píng)論數(shù)據(jù)\python旅游網(wǎng)站評(píng)論數(shù)

通過查看傳回的數(shù)據(jù)我們可以得到這就是我們所要的接口,使用的是post進(jìn)行傳輸,傳輸?shù)腇orm Data 有很多字段,大致可以猜測(cè)出來

poiID 是景點(diǎn)的poiID </br> pagenow 是當(dāng)前的頁數(shù) </br> star 是評(píng)分1-5,0代表全部 </br> resourceId 是一個(gè)每個(gè)資源對(duì)應(yīng)的值

爬取的時(shí)候只需要改變這些值就可以根據(jù)自己的需求爬取內(nèi)容了,但是需要注意的事攜程的pagenow最多只能獲取100頁,而且poiID和resourceId的值是沒有規(guī)律的,需要我們逐個(gè)景點(diǎn)查看...我自己依次找了鼓浪嶼所有景點(diǎn)的值,并存在文本中,文末有g(shù)ithub的共享。

建庫

??我們要做的第一件事就是想好數(shù)據(jù)庫的結(jié)構(gòu),我選擇的還是使用mysql,具體的結(jié)構(gòu)如下:

python爬取攜程和螞蜂窩的景點(diǎn)評(píng)論數(shù)據(jù)\python爬取攜程評(píng)論數(shù)據(jù)\python旅游網(wǎng)站評(píng)論數(shù)

獲取數(shù)據(jù)

??這個(gè)我就不具體分析了,也不難,就是有幾個(gè)坑要注意一下。

第一,不是所有評(píng)論都有景色,性價(jià)比之類的評(píng)分,所以這里要加一個(gè)判斷。</br> 第二,原來是有出行時(shí)間這一項(xiàng)的,現(xiàn)在好像沒有了額。</br> 第三,評(píng)論文本可能會(huì)出現(xiàn)單引號(hào),插入數(shù)據(jù)庫會(huì)出現(xiàn)錯(cuò)誤,要轉(zhuǎn)義或者替代一下。</br> 第四,抓取速度不要太快,攜程反扒還是比較厲害的。

螞蜂窩

分析數(shù)據(jù)

??同樣,螞蜂窩的數(shù)據(jù)也是動(dòng)態(tài)加載的,用相同的方法查看分析數(shù)據(jù)接口。

python爬取攜程和螞蜂窩的景點(diǎn)評(píng)論數(shù)據(jù)\python爬取攜程評(píng)論數(shù)據(jù)\python旅游網(wǎng)站評(píng)論數(shù)

可以看到螞蜂窩的數(shù)據(jù)獲取方式是get,我們可以找出請(qǐng)求的url的規(guī)律。經(jīng)過比較不同景點(diǎn)和不同頁面的數(shù)據(jù),我們發(fā)現(xiàn)參數(shù)的改變主要在兩個(gè)地方,一個(gè)是poiid我用href代替,一個(gè)是頁數(shù)我用num代替。獲取景點(diǎn)的評(píng)論數(shù)據(jù)只要改變這兩個(gè)值就可以了

url='http://pagelet.mafengwo.cn/poi/pagelet/poiCommentListApi?callback=jQuery18105332634542482972_1511924148475?ms=%7B%22poi_id%22%3A%22{href}%22%2C%22page%22%3A{num}%2C%22just_comment%22%3A1%7D'

獲取每個(gè)景點(diǎn)的poi

這個(gè)不是post請(qǐng)求我們就不必一個(gè)個(gè)景點(diǎn)去獲取參數(shù)了,我們可以訪問這個(gè)站點(diǎn)來發(fā)現(xiàn)所有的用戶,然而這個(gè)站點(diǎn)的數(shù)據(jù)也是動(dòng)態(tài)加載的

python爬取攜程和螞蜂窩的景點(diǎn)評(píng)論數(shù)據(jù)\python爬取攜程評(píng)論數(shù)據(jù)\python旅游網(wǎng)站評(píng)論數(shù)

python爬取攜程和螞蜂窩的景點(diǎn)評(píng)論數(shù)據(jù)\python爬取攜程評(píng)論數(shù)據(jù)\python旅游網(wǎng)站評(píng)論數(shù)

python爬取攜程和螞蜂窩的景點(diǎn)評(píng)論數(shù)據(jù)\python爬取攜程評(píng)論數(shù)據(jù)\python旅游網(wǎng)站評(píng)論數(shù)

根據(jù)上面的圖片我們可以清晰的看到我們只需要傳入頁碼數(shù)就可以得到所有的景點(diǎn)的poiid,然后根據(jù)這些poiid我們就可以得到所有的評(píng)論數(shù)據(jù),這一部分我們用一個(gè)函數(shù)來處理

def get_param():
    # 獲取所有景點(diǎn)的參數(shù)
    total = []
    router_url = 'http://www.mafengwo.cn/ajax/router.php'
    for num in range(1, 6):
        params = {
            'sAct': 'KMdd_StructWebAjax|GetPoisByTag',
            'iMddid': 12522,
            'iTagId': 0,
            'iPage': num
        }
        pos = requests.post(url=router_url, data=params, headers=headers).json()
        soup_pos = BeautifulSoup(pos['data']['list'], 'lxml')

        result = [{'scenery': p['title'], 'href': re.findall(re.compile(r'/poi/(\d+).html'), p['href'])[0]} for p in
                  soup_pos.find_all('a')]
        total.extend(result)

    return total

??其余部分相似,不再過多說明。

個(gè)人博客

8aoy1.cn

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI