Pages - Menu

2019年12月5日 星期四

[Scrapy]擷取json的網頁

前言

其實json的網頁,用python的request做應該是最快。
但誰叫我已經架好了scrapyd的伺服器…
只好繼續用scrapy了。




正文

在start_urls可以直接指定json的路徑

start_urls = [
    https://www.myfxxxxx.com/login.json
]



def start_requests(self):
    mail = "xxxxxxx"
    pw = "1232323"
    url = "https://www.myfx.com/api/login.json?mail={0}&pw={1}".format(mail,pw)
    print("startURL:"+url)
    yield scrapy.Request(url, callback = self.parse)  #重寫了爬蟲類的方法, 實現了自定義請求, 運行成功後會調用callback回調函數 



def parse(self, response):
    body = json.loads(response.body_as_unicode())
    print(body['session'])
    url = "https://www.myfx.com/api/geounts.json?session={session}".format(session=body['session'])
    #self.log(self.url)
    if url:
        yield scrapy.Request(url,callback=self.assignURL)

可以覆寫start_request的函數,
設定參數,到下一個callback的function parse
使用了json.load將資料讀入,並重新編碼。
要使用的話,直接用括號取欄位名稱 即可。

ref.
Learning Scrapy筆記(六)- Scrapy處理JSON API和AJAX頁面
Scrapy:抓取返回數據格式為JSON的網站內容
Find a value in JSON using Python
How to use JSON with Python

沒有留言:

張貼留言