2013-05-05 418 views
14

我已經見過this question about scraping ajax,但python沒有在那裏提及。我考慮使用scrapy,我相信他們有關於該主題的一些文檔,但正如您可以看到該網站已關閉。所以我不知道該怎麼做。我想要做以下事情:使用python刮ajax頁面

我只有一個網址,example.com你通過點擊提交去頁面,網址不會改變,因爲他們使用ajax來顯示內容。我想刮掉每一頁的內容,該怎麼做?

可以說,我只想刮掉數字,除了scrapy之外,還有什麼可以做的嗎?如果沒有,你會給我一個關於如何去做的片段,只是因爲他們的網站已經關閉,所以我無法訪問文檔。

回答

32

首先,scrapy文檔可在https://scrapy.readthedocs.org/en/latest/

說到在網頁抓取時處理ajax。基本上,這個想法很簡單:

  • 打開的瀏覽器開發者工具,網絡選項卡
  • 到目標站點
  • 點擊提交按鈕,看看XHR request是要在服務器
  • 模擬這個XHR在蜘蛛的要求

另見:

希望有所幫助。

+1

我指的是這個網址'blog.scrapy.org/scraping-ajax-sites-with-scrapy '這已不再可用,謝謝你提醒我readthedocs.com – Lynob 2013-05-06 18:06:50

+1

明白了。如果您的蜘蛛執行有問題,請考慮發佈另一個問題,您想要抓取哪個網址,點擊哪個按鈕等。快樂刮! – alecxe 2013-05-06 18:23:47

+1

@Lynob這裏是你正在談論的URL:https://web.archive.org/web/20130525095330/http://blog.scrapy.org/scraping-ajax-sites-with-scrapy – 2upmedia 2015-12-17 20:57:05

3

我發現答案非常有用,但我想讓它更簡單。

response = requests.post(request_url, data=payload, headers=request_headers) 

request.post帶有三個參數url,data和headers。這三個屬性的值可以在XHR請求中找到。

複製整個請求頭和表單數據加載到上述變量,你是好去

+1

如果我能找不到XHR請求?它在Chrome或FoxFox webtools中不可見。但是,有一個AJAXSetup.js文件。有沒有其他方法可以找到這些信息? – whieronymus 2017-06-05 21:21:35