chrome瀏覽器
果殼網-科學人 頁面
**1.進入果殼網-科學人分頁
2.f12開啟「審查元素」選則network窗格並重新整理頁面以抓包
3.在頁面上滑動滑鼠滾輪使頁面向下
此時可以看到頁面是動態載入的
相應的在監控視窗可以看到有資料收發(下圖紅圈處)
所以非同步傳輸資料必然是在此時發生的
4.雙擊上圖紅圈處,可以篩選出在此時變動的資料報
5雙擊資料報,右側展開包的相關資訊
可以發現是get方式傳輸的json資訊(實際上這也是ajax非同步載入的特點)
6.將包的相關資訊切換到preview選項卡
我們可以看到chrome已經很直觀的為我們將json資訊格式化顯示了
json中包含五個鍵值對分別是limit now offset ok 以及乙個json陣列result
條目資訊就在result中
到這裡,我們就找到非同步載入的資料在哪了
但是你肯定會問,那怎麼不斷的爬取非同步資料呢?這就是下一點了
第一種方法:
我們分析包的url以及包的內容
=1508143436759」>
url裡面limit=20
而result中也是20條資料
咦?好像有點聯絡
嘗試修改limit值為30直接開啟url發現有效,於是可以以limit來構建爬蟲
第二種方法:
繼續向下滑動頁面,使頁面再ajax載入一次,對比兩次包url
=1508143436759」>
=1508143436760」>
發現改變的是offset,並且差值是20正是條目的數目
即offset就是條目數
於是可以以offset來構建爬蟲
因為獲取的是json資料所以這裡嘗試通過json模組來獲取所需內容
採用第一二種方法結合:將limit設定為1,offset+1遞增的方式構建
幾個要點:
1.利用pprint幫助觀察result中資料
2.儲存為檔案時 open函式中加入encoding=utf-8,否則儲存資料中文亂碼
with open('result.txt', 'a', encoding='utf-8') as fo:
fo.write(str(items)+'\n')
3.核心**
def
get_datas
(offset):
'''從頁面中獲取資料'''
items = {}
url = '' + str(offset) + '&_=1508134471173'
html = get_page(url)
#datas = json.loads(html.text)
#pprint.pprint(datas['result'])
datas = json.loads(html.text)['result'][0]
items['type'] = datas['author']['nickname']
items['keyword'] = datas['subject']['name']
items['title'] = datas['title']
items['summary'] = datas['summary']
#pprint.pprint(items)
with open('result.txt', 'a', encoding='utf-8') as fo:
fo.write(str(items)+'\n')
結果如下:
python爬蟲學習 爬取網頁中的動態資料
在之前的爬蟲豆瓣電影top250學習中,爬取的內容都直接在網頁原始碼中,而實際上很多資料都是在網頁中實時ajax請求,並不會顯示在源 中 例如豆瓣電影分類排行榜 動作片為例,開啟f12,選擇network xhr,當向下滑動網頁時,我們可以看到新的檔案出現 通過鏈結 我們大體可以猜測出start與l...
Python 爬蟲爬取網頁
工具 python 2.7 import urllib import urllib2 defgetpage url 爬去網頁的方法 request urllib.request url 訪問網頁 reponse urllib2.urlopen request 返回網頁 return response...
python爬蟲爬取策略
在爬蟲系統中,待抓取url佇列是很重要的一部分。待抓取url佇列中的url以什麼樣的順序排列也是乙個很重要的問題,因為這涉及到先抓取那個頁面,後抓取哪個頁面。而決定這些url排列順序的方法,叫做抓取策略。下面重點介紹幾種常見的抓取策略 一 深度優先遍歷策略 深度優先遍歷策略是指網路爬蟲會從起始頁開始...