九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Python爬蟲使用Selenium PhantomJS抓取Ajax和動(dòng)態(tài)HTML內(nèi)容

1,引言

Python網(wǎng)絡(luò)爬蟲內(nèi)容提取器一文我們?cè)敿?xì)講解了核心部件:可插拔的內(nèi)容提取器類gsExtractor。本文記錄了確定gsExtractor的技術(shù)路線過程中所做的編程實(shí)驗(yàn)。這是第二部分,第一部分實(shí)驗(yàn)了用xslt方式一次性提取靜態(tài)網(wǎng)頁內(nèi)容并轉(zhuǎn)換成xml格式。留下了一個(gè)問題:javascript管理的動(dòng)態(tài)內(nèi)容怎樣提???那么本文就回答這個(gè)問題。

2,提取動(dòng)態(tài)內(nèi)容的技術(shù)部件

在上一篇python使用xslt提取網(wǎng)頁數(shù)據(jù)中,要提取的內(nèi)容是直接從網(wǎng)頁的source code里拿到的。但是一些Ajax動(dòng)態(tài)內(nèi)容是在source code找不到的,就要找合適的程序庫把異步或動(dòng)態(tài)加載的內(nèi)容加載上來,交給本項(xiàng)目的提取器進(jìn)行提取。

python可以使用selenium執(zhí)行javascript,selenium可以讓瀏覽器自動(dòng)加載頁面,獲取需要的數(shù)據(jù)。selenium自己不帶瀏覽器,可以使用第三方瀏覽器如Firefox,Chrome等,也可以使用headless瀏覽器如PhantomJS在后臺(tái)執(zhí)行。

3,源代碼和實(shí)驗(yàn)過程

假如我們要抓取京東手機(jī)頁面的手機(jī)名稱和價(jià)格(價(jià)格在網(wǎng)頁源碼是找不到的),如下圖:

第一步:利用集搜客謀數(shù)臺(tái)的直觀標(biāo)注功能,可以極快速度自動(dòng)生成一個(gè)調(diào)試好的抓取規(guī)則,其實(shí)是一個(gè)標(biāo)準(zhǔn)的xslt程序,如下圖,把生成的xslt程序拷貝到下面的程序中即可。注意:本文只是記錄實(shí)驗(yàn)過程,實(shí)際系統(tǒng)中,將采用多種方式把xslt程序注入到內(nèi)容提取器重。

第二步:執(zhí)行如下代碼(在windows10, python3.2下測(cè)試通過),請(qǐng)注意:xslt是一個(gè)比較長(zhǎng)的字符串,如果刪除這個(gè)字符串,代碼沒有幾行,足以見得Python之強(qiáng)大

0 and count(.//*[@id='name']/h1/text())>0]" mode="商品"/>0 and count(.//*[@id='name']/h1/text())>0]" mode="商品"><價(jià)格><名稱>""")# 使用webdriver.PhantomJSbrowser = webdriver.PhantomJS(executable_path='C:\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe')browser.get(url)time.sleep(3)transform = etree.XSLT(xslt_root)# 執(zhí)行js得到整個(gè)domhtml = browser.execute_script("return document.documentElement.outerHTML")doc = etree.HTML(html)# 用xslt從dom中提取需要的字段result_tree = transform(doc)print(result_tree)' title='' data-original-title='復(fù)制'>
#/usr/bin/pythonfrom urllib import requestfrom lxml import etreefrom selenium import webdriverimport time# 京東手機(jī)商品頁面url = 'http://item.jd.com/1312640.html'# 下面的xslt是通過集搜客的謀數(shù)臺(tái)圖形界面自動(dòng)生成的xslt_root = etree.XML('''\<商品> and count(.//*[@id='summary-price']/div[position()=2]/strong/text())>0 and count(.//*[@id='name']/h1/text())>0]' mode='商品'/> and count(.//*[@id='summary-price']/div[position()=2]/strong/text())>0 and count(.//*[@id='name']/h1/text())>0]' mode='商品'><價(jià)格>]/div[position()=2]/strong/text()'/>]/div[position()=2]/strong/text()'/>'><名稱>]/h1/text()'/>]/h1/text()'/>'>''')# 使用webdriver.PhantomJSbrowser = webdriver.PhantomJS(executable_path='C:\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe')browser.get(url)time.sleep(3)transform = etree.XSLT(xslt_root)# 執(zhí)行js得到整個(gè)domhtml = browser.execute_script('return document.documentElement.outerHTML')doc = etree.HTML(html)# 用xslt從dom中提取需要的字段result_tree = transform(doc)print(result_tree)

第三步:下圖可以看到,網(wǎng)頁中的手機(jī)名稱和價(jià)格被正確抓取下來了

4,接下來閱讀

至此,我們通過兩篇文章演示怎樣抓取靜態(tài)和動(dòng)態(tài)網(wǎng)頁內(nèi)容,都采用了xslt一次性將需要的內(nèi)容從網(wǎng)頁上提取出來,其實(shí)xslt是一個(gè)比較復(fù)雜的程序語言,如果手工編寫xslt,那么還不如寫成離散的xpath。如果這個(gè)xslt不是手工寫出來的,而是程序自動(dòng)生成的,這就有意義了,程序員再也不要花時(shí)間編寫和調(diào)測(cè)抓取規(guī)則了,這是很費(fèi)時(shí)費(fèi)力的工作。接下來《1分鐘快速生成用于網(wǎng)頁內(nèi)容提取的xslt》將講述怎樣生成xslt。

5,集搜客GooSeeker開源代碼下載源

1.GooSeeker開源Python網(wǎng)絡(luò)爬蟲GitHub源

5,文檔修改歷史

2016-05-26:V2.0,增補(bǔ)文字說明
2016-05-29:V2.1,增加第五章:源代碼下載源,并更換github源的網(wǎng)址

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Python網(wǎng)絡(luò)爬蟲神器PyQuery的使用方法
Python中利用xpath解析HTML
Python Selenium Webdriver安裝手冊(cè)
為編寫網(wǎng)絡(luò)爬蟲程序安裝Python3.5
Python 用 selenium 做個(gè)簡(jiǎn)單的谷歌翻譯
Python爬蟲利器五之Selenium的用法 | 靜覓
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服