馬蜂窩臺灣全網(wǎng)游記爬取

一個同學(xué)要做畢業(yè)設(shè)計(jì),需要馬蜂窩網(wǎng)上關(guān)于臺灣省的全部點(diǎn)評游記,正好很久沒寫這種小爬蟲了,來練練手。
馬蜂窩的游記可以在兩個地方找到,一個是直接在首頁上:http://www.mafengwo.cn/

Paste_Image.png

另外一個是:http://www.mafengwo.cn/yj/12684/

Paste_Image.png

不同的是首頁上會多一點(diǎn),有250頁,而第二種只有50頁。當(dāng)然選擇第一種。
首先觀察首頁上的關(guān)于臺灣的熱門游記,1,2,3,4翻下來之后發(fā)現(xiàn)網(wǎng)址不會變,肯定是ajax了。F12,network之后開始找網(wǎng)址吧。

這里要著重提一下的是這次遇到的一個問題。

http://www.mafengwo.cn/note/pagelet/pagelet/recommendNoteApi?callback=jQuery18106049210270286689_1500622287438&params=%7B%22type%22%3A0%2C%22objid%22%3A0%2C%22page%22%3A11%2C%22ajax%22%3A1%2C%22retina%22%3A1%7D&_=1500622917079
這是找到的真實(shí)網(wǎng)址,返回的是json

Paste_Image.png

第一次找的時(shí)候我看了一眼就跳過了,后來問了一個朋友才知道,這是網(wǎng)頁中為了加快加載速度的一種方式,將鼠標(biāo)放上去后,就可以看到它返回的東西了。這一點(diǎn)搞明白就簡單了。將其中返回的網(wǎng)頁后續(xù)取出,裝上baseurl就是每一篇游記的地址了。如下:

    data2= re.findall(".*jQuery1810367880419551615_1500604060808\((.*?}})\);",data)[0]
    data3 = json.loads(data2)
    next_page =data3['data']['html']
    html = etree.HTML(next_page)
    infos = html.xpath('//div[@class="tn-image"]/a')
    for info in infos:
        link=info.xpath('@href')[0]
        all_link.append('http://www.mafengwo.cn/'+link)

最后在回到找到的網(wǎng)址,觀察后面的params=%7B%22type%22%3A0%2C%22objid%22%3A0%2C%22page%22%3A11%2C%22ajax%22%3A1%2C%22retina%22%3A1%7D,有很多參數(shù)都是在下面可以找到的,其他都是不變的,只有page在變的。
page%22%3A11%2C%22,但是有很多數(shù)字,符號。多翻幾頁之后就可以明白是在3A~%2C之間的數(shù)字才是真的填寫地點(diǎn)。
后續(xù)的就簡單很多了。

果然還是知己知彼,方能寫好爬蟲。要補(bǔ)前端的知識了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容