国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

pyspider 爬蟲教程(三):使用 PhantomJS 渲染帶 JS 的頁面

zhongmeizhi / 2196人閱讀

摘要:英文原文在上兩篇教程中,我們學習了怎么從中提取信息,也學習了怎么處理一些請求復雜的頁面。在使用之前,你需要安裝它安裝文檔。當你安裝了之后,在運行模式的時就會自動啟用了。使用當連上代理后,你就能通過在中添加的參數,開啟使用抓取。

英文原文:http://docs.pyspider.org/en/latest/tutorial/Render-with-PhantomJS/

在上兩篇教程中,我們學習了怎么從 HTML 中提取信息,也學習了怎么處理一些請求復雜的頁面。但是有一些頁面,它實在太復雜了,無論是分析 API 請求的地址,還是渲染時進行了加密,讓直接抓取請求非常麻煩。這時候就是 PhantomJS 大顯身手的時候了。

在使用 PhantomJS 之前,你需要安裝它(安裝文檔)。當你安裝了之后,在運行 all 模式的 pyspider 時就會自動啟用了。當然,你也可以在 demo.pyspider.org 上嘗試。

使用 PhantomJS

當 pyspider 連上 PhantomJS 代理后,你就能通過在 self.crawl 中添加 fetch_type="js" 的參數,開啟使用 PhantomJS 抓取。例如,在教程二中,我們嘗試抓取的 http://movie.douban.com/explore 就可以通過 PhantomJS 直接抓取:

pythonclass Handler(BaseHandler):
    def on_start(self):
        self.crawl("http://movie.douban.com/explore",
                   fetch_type="js", callback=self.phantomjs_parser)

    def phantomjs_parser(self, response):
        return [{
            "title": "".join(
                s for s in x("p").contents() if isinstance(s, basestring)
            ).strip(),
            "rate": x("p strong").text(),
            "url": x.attr.href,
        } for x in response.doc("a.item").items()]
  

我在這里使用了一些 PyQuery 的 API,你可以在 PyQuery complete API 獲得完整的 API 手冊。

在頁面上執行自定義腳本

你會發現,在上面我們使用 PhantomJS 抓取的豆瓣熱門電影只有 20 條。當你點擊『加載更多』時,能獲得更多的熱門電影。為了獲得更多的電影,我們可以使用 self.crawljs_script 參數,在頁面上執行一段腳本,點擊加載更多:

python    def on_start(self):
        self.crawl("http://movie.douban.com/explore#more",
                   fetch_type="js", js_script="""
                   function() {
                     setTimeout("$(".more").click()", 1000);
                   }""", callback=self.phantomjs_parser)
  

這個腳本默認在頁面加載結束后執行,你可以通過 js_run_at 參數 修改這個行為

由于是 AJAX 異步加載的,在頁面加載完成時,第一頁的電影可能還沒有加載完,所以我們用 setTimeout 延遲 1 秒執行。

你可以間隔一定時間,多次點擊,這樣可以加載更多頁。

由于相同 URL (實際是相同 taskid) 的任務會被去重,所以這里為 URL 加了一個 #more

上面兩個例子,都可以在 http://demo.pyspider.org/debug/tutorial_douban_explore 中找到。


中文原文: http://blog.binux.me/2015/01/pyspider-tutorial-level-3-render-with-phantomjs/

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/45325.html

相關文章

  • Python利用Phantomjs抓取渲染JS網頁

    摘要:最近需要爬取某網站,無奈頁面都是渲染后生成的,普通的爬蟲框架搞不定,于是想到用搭一個代理。調用貌似沒有現成的第三方庫如果有,請告知小,漫步了一圈,發現只有提供了現成的方案。 最近需要爬取某網站,無奈頁面都是JS渲染后生成的,普通的爬蟲框架搞不定,于是想到用Phantomjs搭一個代理。 Python調用Phantomjs貌似沒有現成的第三方庫(如果有,請告知小2),漫步了一圈,發現只...

    lowett 評論0 收藏0
  • Python3網絡爬蟲實戰---10、爬蟲框架安裝:PySpider、Scrapy

    摘要:所以如果對爬蟲有一定基礎,上手框架是一種好的選擇。缺少包,使用安裝即可缺少包,使用安裝即可上一篇文章網絡爬蟲實戰爬取相關庫的安裝的安裝下一篇文章網絡爬蟲實戰爬蟲框架的安裝 上一篇文章:Python3網絡爬蟲實戰---9、APP爬取相關庫的安裝:Appium的安裝下一篇文章:Python3網絡爬蟲實戰---11、爬蟲框架的安裝:ScrapySplash、ScrapyRedis 我們直接...

    張憲坤 評論0 收藏0
  • 高效率爬蟲框架之pyspider

    摘要:一個爬蟲框架的雛形,應該包含調度器隊列請求對象等。我們平時寫的爬蟲程序,連最基本的框架都不具備。這樣,不僅開發效率會提高很多,而且爬蟲的健壯性也更強。支持多種消息隊列如。將抓取任務分發給進行抓取,執行并得到響應隨后將響應發送給。 showImg(https://segmentfault.com/img/remote/1460000015557057); 為什么要使用爬蟲框架 在我們平常...

    MasonEast 評論0 收藏0
  • 零基礎如何學爬蟲技術

    摘要:楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,。本文來源知乎作者路人甲鏈接楚江數據提供網站數據采集和爬蟲軟件定制開發服務,服務范圍涵蓋社交網絡電子商務分類信息學術研究等。 楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,http://www.chujiangdata.com。 第一:Python爬蟲學習系列教程(來源于某博主:htt...

    KunMinX 評論0 收藏0
  • pyspider 實戰項目之爬取去哪兒

    摘要:現在我們用一個實戰項目,來進一步掌握框架的使用。此次的項目爬取的目標是去哪兒網,我要將所有攻略的作者標題出發日期人均費用攻略正文等保存下來,存儲到中。代表當前的爬取速率。 showImg(https://segmentfault.com/img/remote/1460000015563534); 閱讀文本大概需要 13 分鐘。 通過之前的文章介紹,你現在應該對 pyspider 有了一...

    banana_pi 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<