我正在用scrapy編寫蜘蛛,但是,我遇到了一些使用js呈現的網站,因此urllib2.open_url不起作用。我發現我可以使用webbrowser.open_new(url)打開瀏覽器,但是,我沒有找到如何使用webbrowser獲取頁面的src代碼。有沒有什麼辦法可以用webbrowser來做到這一點,或者有沒有其他的解決方案沒有webbrowser來處理js站點?如何使用python獲取webbrowser的源代碼
回答
如果你需要處理JavaScript,你需要實現一個JavaScript引擎。這會讓你的蜘蛛變得更加複雜。主要是因爲JavaScript幾乎總是根據時間或用戶採取的行動來修改DOM。這使得在爬蟲中處理JS非常具有挑戰性。 如果你真的需要在你的蜘蛛中處理JavaScript,你可以看看Mozilla的JavaScript引擎:https://developer.mozilla.org/en/docs/SpiderMonkey
你可以在那裏使用帶有Webkit引擎的scraper。
其中之一是dryscrape。
例子:
import dryscrape
search_term = 'dryscrape'
# set up a web scraping session
sess = dryscrape.Session(base_url = 'http://google.com')
# we don't need images
sess.set_attribute('auto_load_images', False)
# visit homepage and search for a term
sess.visit('/')
q = sess.at_xpath('//*[@name="q"]')
q.set(search_term)
q.form().submit()
# extract all links
for link in sess.xpath('//a[@href]'):
print link['href']
# save a screenshot of the web page
sess.render('google.png')
print "Screenshot written to 'google.png'"
在查看更多信息:
https://github.com/niklasb/dryscrape
https://dryscrape.readthedocs.org/en/latest/index.html
還有一個鬼(http://jeanphix.me/Ghost.py/)另一個無頭webkit python實現。我還沒有嘗試過,所以我不能說哪個更好。 –
Raslan:謝謝你的建議,我在windows上工作,當我嘗試安裝'dryscrape'時,它告訴安裝成功,但是當我在運行時嘗試導入drayscrape時失敗,說'從cssselect導入GenericTranslator ImportError:沒有名爲cssselect的模塊。 – user806135
dryscrape的安裝指南有命令 pip install -r requirements.txt 其中文件requirements.txt具有要安裝的軟件包列表。其中之一是cssselect。當我嘗試運行'pip install -r requirements.txt'時,請按照後面的安裝指南 –
如果你需要一個完整的JS引擎,有許多的方法可以在Python驅動的webkit 。直到最近,這些事情都是用Selenium完成的。 Selenium驅動整個瀏覽器。
最近有更新更簡單的方法來運行Python中的webkit引擎(其中包括v8 javascript引擎)。看到這個太問題: Headless Browser for Python (Javascript support REQUIRED!)
它引用這個博客作爲一個例子Scraping Javascript Webpages with Webkit。它看起來或多或少地只是你需要的。
我試圖在幾天內找到相同問題的答案。
我建議你試試QT framework與WebKit。 有兩個python綁定。一個是PyQt,另一個是PySide。如果你想創建更復雜的東西或者想要100%控制你的代碼,你可以直接使用它們。
對於在瀏覽器環境中執行JavaScript這樣的瑣碎事情,您可以使用Ghost.py。它具有some sort of documentation以及從命令行使用它時出現的一些問題,但除此之外它很棒。
- 1. 從WebBrowser獲取源代碼WPF C#
- 2. 使用IPersistStreamInit從WPF-WebBrowser-Control獲取HTML源代碼
- 3. python:如何從代碼對象獲取源代碼?
- 4. 如何使用Tortoise SVN從谷歌代碼獲取源代碼?
- 5. 使用請求獲取頁面而不是Python中的源代碼,爲什麼?我如何獲得源代碼?
- 6. 使用VB6 WebBrowser控件抓取所有的HTML源代碼
- 7. 獲取HTML源代碼與Python的Cookie
- 8. 獲取Webbrowser控件中URL的原始源代碼
- 9. VB.NET獲取頁面的源代碼WebBrowser控件
- 10. 使用JavaScript獲取URL的源代碼
- 11. 如何獲取Job的源代碼
- 12. 如何獲取Komodo Edit的源代碼?
- 13. 如何獲取.load()的源代碼
- 14. 如何使用WebBrowser獲取HttpOnly的Cookie?
- 15. 如何使用httpClient編碼gzip來獲取頁面源代碼?
- 16. 獲取源代碼。
- 17. 獲取源代碼
- 18. 在Webbrowser C中獲取網頁源代碼#
- 19. 如何獲取python庫ta-lib中使用的各種函數的源代碼?
- 20. 遠程登錄到網站並使用WPF獲取HTML源代碼WebBrowser類
- 21. Python WebKitWebView:如何獲取(生成的)源代碼
- 22. 如何獲取python打印函數的源代碼?
- 23. 如何使用HtmlUnit抓取源代碼
- 24. 使用git獲取aapt源代碼
- 25. 使用Java獲取網頁源代碼
- 26. 如何在AS3中使用RegularExpressions獲取圖像的源代碼?
- 27. 如何使用硒獲取特定元素的html源代碼?
- 28. 如何使用NSURLConnection獲取呈現的javascript源代碼
- 29. ANTLR如何獲取重寫的代碼源? (使用TokenRewriteStream)
- 30. 如何使用VB.net獲取html頁面的源代碼?
網頁瀏覽器不存儲頁面的標記,它包含一個DOM。 – Bergi