scrapy抓取ajax請求的網頁
在上一篇部落格
http://zhouxi2010.iteye.com/blog/1450177
中介紹了用scrapy抓取網頁,但是隻能抓取普通html中的連結,對於ajax請求的網頁卻抓不到,但是實際應用中ajax請求又是十分普遍的,所以這裡在記錄下抓取ajax頁面的方法.
仍然是spiders/book.py:
- class BookSpider(CrawlSpider):
- ................
- ................
- ................
- def parse_item(self, response):
- hxs = HtmlXPathSelector(response)
- item = BookItem()
- ........
- ..........
- #這裡url是虛構的,使用時需要修改
- url = "http://test_url/callback.php?ajax=true"
- request = Request(url, callback=self.parse_ajax)
- request.meta['item'] = item
- #這裡將ajax的url找出來,然後夠找請求,框架執行請求收到返回後再回撥
- yield request
- def parse_ajax(self, response):
- data = response.body
- #這裡寫正則匹配或者選擇XPathSelector獲取需要捕獲的資料,略
- ajaxdata = get_data(data)
- #由於返回可能是js,可以採用python來模擬js直譯器,不過這裡偷懶就用json來進行轉換
- if ajaxdata:
- x = '{"data": "' + ajaxdata.replace('\n', '') + '"}'
- ajaxdata = simplejson.loads(x)['data']
- else:
- ajaxdata = ''
- item = response.meta['item']
- item['ajaxdata'] = ajaxdata
- for key in item:
- if isinstance(item[key], unicode):
- item[key] = item[key].encode('utf8')
- #到這裡一個Item的全部元素都抓齊了,所以返回item以供儲存
- return item
相關文章
- WebForm 頁面ajax 請求後臺頁面 方法WebORM
- 首頁 使用axios 傳送ajax請求iOS
- ajax請求
- html頁面中如何傳送ajax請求HTML
- ajax請求 juery
- JS 中的網路請求 AJAX, Fetch, WebSocketJSWeb
- python專案例項:抓取網頁時間段內的請求次數、頻寬Python網頁
- 首頁父子組元件 ajax陣列請求各個頁面元件陣列
- 原生ajax請求&JSONPJSON
- 封裝ajax、axios請求封裝iOS
- springmvc處理ajax請求SpringMVC
- 如何傳送請求以及AJAX
- Ajax請求後臺資料
- ajax請求servlet返回資料Servlet
- KKB : Jquery實現Ajax請求jQuery
- ajax跨域請求之CORS的使用跨域CORS
- 基於jQuery的三種AJAX請求jQuery
- ajax中POST請求與引數(請求體)設定
- ajax中設定請求頭和自定義請求頭
- 判斷請求是否為Ajax請求的小妙招
- 爬蟲進階——動態網頁Ajax資料抓取(簡易版)爬蟲網頁
- Scrapy的日誌等級和請求傳參
- vue2.0 axios post請求傳參問題(ajax請求)VueiOS
- ajax的post或者get伺服器請求伺服器
- 重複的ajax請求讓人很受傷
- 利用fetch方法實現Ajax請求
- 基於jq封裝ajax請求封裝
- ajax請求下載excel檔案Excel
- jquery Ajax 請求錯誤 Unexpected tokenjQuery
- Charles 抓取 https 請求說明文件(mac)HTTPMac
- 使用代理抓取網頁的原因網頁
- 談談如何抓取ajax動態網站網站
- 使用Scrapy抓取優酷視訊列表頁(電影/電視)
- React 中用jQuery的ajax 和 axios請求資料ReactjQueryiOS
- spring security:ajax請求的session超時處理SpringSession
- React、Axios、MockJs實現Ajax的請求攔截ReactiOSMockJS
- vue中使用axios傳送ajax請求VueiOS
- Ajax+SpringMVC實現跨域請求SpringMVC跨域
- JS進階系列 --- ajax請求優化JS優化