摘要:英文原文在上兩篇教程中,我們學(xué)習(xí)了怎么從中提取信息,也學(xué)習(xí)了怎么處理一些請(qǐng)求復(fù)雜的頁(yè)面。在使用之前,你需要安裝它安裝文檔。當(dāng)你安裝了之后,在運(yùn)行模式的時(shí)就會(huì)自動(dòng)啟用了。使用當(dāng)連上代理后,你就能通過(guò)在中添加的參數(shù),開(kāi)啟使用抓取。
英文原文:http://docs.pyspider.org/en/latest/tutorial/Render-with-PhantomJS/
在上兩篇教程中,我們學(xué)習(xí)了怎么從 HTML 中提取信息,也學(xué)習(xí)了怎么處理一些請(qǐng)求復(fù)雜的頁(yè)面。但是有一些頁(yè)面,它實(shí)在太復(fù)雜了,無(wú)論是分析 API 請(qǐng)求的地址,還是渲染時(shí)進(jìn)行了加密,讓直接抓取請(qǐng)求非常麻煩。這時(shí)候就是 PhantomJS 大顯身手的時(shí)候了。
在使用 PhantomJS 之前,你需要安裝它(安裝文檔)。當(dāng)你安裝了之后,在運(yùn)行 all 模式的 pyspider 時(shí)就會(huì)自動(dòng)啟用了。當(dāng)然,你也可以在 demo.pyspider.org 上嘗試。
使用 PhantomJS當(dāng) pyspider 連上 PhantomJS 代理后,你就能通過(guò)在 self.crawl 中添加 fetch_type="js" 的參數(shù),開(kāi)啟使用 PhantomJS 抓取。例如,在教程二中,我們嘗試抓取的 http://movie.douban.com/explore 就可以通過(guò) 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()]
在頁(yè)面上執(zhí)行自定義腳本我在這里使用了一些 PyQuery 的 API,你可以在 PyQuery complete API 獲得完整的 API 手冊(cè)。
你會(huì)發(fā)現(xiàn),在上面我們使用 PhantomJS 抓取的豆瓣熱門(mén)電影只有 20 條。當(dāng)你點(diǎn)擊『加載更多』時(shí),能獲得更多的熱門(mén)電影。為了獲得更多的電影,我們可以使用 self.crawl 的 js_script 參數(shù),在頁(yè)面上執(zhí)行一段腳本,點(diǎn)擊加載更多:
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)
這個(gè)腳本默認(rèn)在頁(yè)面加載結(jié)束后執(zhí)行,你可以通過(guò) js_run_at 參數(shù) 修改這個(gè)行為
由于是 AJAX 異步加載的,在頁(yè)面加載完成時(shí),第一頁(yè)的電影可能還沒(méi)有加載完,所以我們用 setTimeout 延遲 1 秒執(zhí)行。
你可以間隔一定時(shí)間,多次點(diǎn)擊,這樣可以加載更多頁(yè)。
由于相同 URL (實(shí)際是相同 taskid) 的任務(wù)會(huì)被去重,所以這里為 URL 加了一個(gè) #more
上面兩個(gè)例子,都可以在 http://demo.pyspider.org/debug/tutorial_douban_explore 中找到。
中文原文: http://blog.binux.me/2015/01/pyspider-tutorial-level-3-render-with-phantomjs/
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/45325.html
摘要:最近需要爬取某網(wǎng)站,無(wú)奈頁(yè)面都是渲染后生成的,普通的爬蟲(chóng)框架搞不定,于是想到用搭一個(gè)代理。調(diào)用貌似沒(méi)有現(xiàn)成的第三方庫(kù)如果有,請(qǐng)告知小,漫步了一圈,發(fā)現(xiàn)只有提供了現(xiàn)成的方案。 最近需要爬取某網(wǎng)站,無(wú)奈頁(yè)面都是JS渲染后生成的,普通的爬蟲(chóng)框架搞不定,于是想到用Phantomjs搭一個(gè)代理。 Python調(diào)用Phantomjs貌似沒(méi)有現(xiàn)成的第三方庫(kù)(如果有,請(qǐng)告知小2),漫步了一圈,發(fā)現(xiàn)只...
摘要:所以如果對(duì)爬蟲(chóng)有一定基礎(chǔ),上手框架是一種好的選擇。缺少包,使用安裝即可缺少包,使用安裝即可上一篇文章網(wǎng)絡(luò)爬蟲(chóng)實(shí)戰(zhàn)爬取相關(guān)庫(kù)的安裝的安裝下一篇文章網(wǎng)絡(luò)爬蟲(chóng)實(shí)戰(zhàn)爬蟲(chóng)框架的安裝 上一篇文章:Python3網(wǎng)絡(luò)爬蟲(chóng)實(shí)戰(zhàn)---9、APP爬取相關(guān)庫(kù)的安裝:Appium的安裝下一篇文章:Python3網(wǎng)絡(luò)爬蟲(chóng)實(shí)戰(zhàn)---11、爬蟲(chóng)框架的安裝:ScrapySplash、ScrapyRedis 我們直接...
摘要:一個(gè)爬蟲(chóng)框架的雛形,應(yīng)該包含調(diào)度器隊(duì)列請(qǐng)求對(duì)象等。我們平時(shí)寫(xiě)的爬蟲(chóng)程序,連最基本的框架都不具備。這樣,不僅開(kāi)發(fā)效率會(huì)提高很多,而且爬蟲(chóng)的健壯性也更強(qiáng)。支持多種消息隊(duì)列如。將抓取任務(wù)分發(fā)給進(jìn)行抓取,執(zhí)行并得到響應(yīng)隨后將響應(yīng)發(fā)送給。 showImg(https://segmentfault.com/img/remote/1460000015557057); 為什么要使用爬蟲(chóng)框架 在我們平常...
摘要:楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲(chóng)技術(shù)以供學(xué)習(xí),。本文來(lái)源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲(chóng)軟件定制開(kāi)發(fā)服務(wù),服務(wù)范圍涵蓋社交網(wǎng)絡(luò)電子商務(wù)分類信息學(xué)術(shù)研究等。 楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲(chóng)技術(shù)以供學(xué)習(xí),http://www.chujiangdata.com。 第一:Python爬蟲(chóng)學(xué)習(xí)系列教程(來(lái)源于某博主:htt...
摘要:現(xiàn)在我們用一個(gè)實(shí)戰(zhàn)項(xiàng)目,來(lái)進(jìn)一步掌握框架的使用。此次的項(xiàng)目爬取的目標(biāo)是去哪兒網(wǎng),我要將所有攻略的作者標(biāo)題出發(fā)日期人均費(fèi)用攻略正文等保存下來(lái),存儲(chǔ)到中。代表當(dāng)前的爬取速率。 showImg(https://segmentfault.com/img/remote/1460000015563534); 閱讀文本大概需要 13 分鐘。 通過(guò)之前的文章介紹,你現(xiàn)在應(yīng)該對(duì) pyspider 有了一...
閱讀 3414·2023-04-25 22:04
閱讀 2206·2021-11-22 15:29
閱讀 2175·2021-10-11 10:57
閱讀 1417·2021-09-24 09:48
閱讀 3156·2021-09-09 09:34
閱讀 2556·2021-09-02 15:21
閱讀 2405·2019-08-30 15:53
閱讀 1144·2019-08-30 14:07