成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

ymyang / 2098人閱讀

摘要:,集搜客開源代碼下載源開源網(wǎng)絡(luò)爬蟲源,文檔修改歷史,增補(bǔ)文字說明,增加第五章源代碼下載源,并更換源的網(wǎng)址

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è)比較長的字符串,如果刪除這個(gè)字符串,代碼沒有幾行,足以見得Python之強(qiáng)大

#/usr/bin/python
from urllib import request
from lxml import etree
from selenium import webdriver
import time

# 京東手機(jī)商品頁面
url = "http://item.jd.com/1312640.html"

# 下面的xslt是通過集搜客的謀數(shù)臺(tái)圖形界面自動(dòng)生成的
xslt_root = etree.XML("""


<商品>
0 and count(.//*[@id="name"]/h1/text())>0]" mode="商品"/>



0 and count(.//*[@id="name"]/h1/text())>0]" mode="商品">

<價(jià)格>






<名稱>








""")

# 使用webdriver.PhantomJS
browser = webdriver.PhantomJS(executable_path="C:phantomjs-2.1.1-windowsinphantomjs.exe")
browser.get(url)
time.sleep(3)

transform = etree.XSLT(xslt_root)

# 執(zhí)行js得到整個(gè)dom
html = 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)址

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/37960.html

相關(guān)文章

  • Python爬蟲實(shí)戰(zhàn)(2):爬取京東商品列表

    摘要:,源代碼爬取京東商品列表,以手機(jī)商品列表為例示例網(wǎng)址版本京東手機(jī)列表源代碼下載位置請(qǐng)看文章末尾的源。,抓取結(jié)果運(yùn)行上面的代碼,就會(huì)爬取京東手機(jī)品類頁面的所有手機(jī)型號(hào)價(jià)格等信息,并保存到本地文件京東手機(jī)列表中。 showImg(https://segmentfault.com/img/bVxXHW); 1,引言 在上一篇《python爬蟲實(shí)戰(zhàn):爬取Drupal論壇帖子列表》,爬取了一個(gè)用...

    shevy 評(píng)論0 收藏0
  • 爬蟲問題總結(jié)

    摘要:編碼我們發(fā)現(xiàn),中有時(shí)候存在中文,這是就需要對(duì)進(jìn)行編碼??梢韵葘⒅形霓D(zhuǎn)換成編碼,然后使用方法對(duì)參數(shù)進(jìn)行編碼后傳遞。 本文檔對(duì)日常學(xué)習(xí)中用 python 做數(shù)據(jù)爬取時(shí)所遇到的一些問題做簡要記錄,以便日后查閱,部分問題可能因?yàn)檎J(rèn)識(shí)不到位會(huì)存在一些誤解,敬請(qǐng)告知,萬分感謝,共同進(jìn)步。 估算網(wǎng)站規(guī)模 該小節(jié)主要針對(duì)于整站爬取的情況。爬取整站之前,肯定是要先對(duì)一個(gè)網(wǎng)站的規(guī)模進(jìn)行估計(jì)。這是可以使用g...

    nanfeiyan 評(píng)論0 收藏0
  • Python爬蟲實(shí)戰(zhàn)(4):豆瓣小組話題數(shù)據(jù)采集—動(dòng)態(tài)網(wǎng)頁

    摘要:,引言注釋上一篇爬蟲實(shí)戰(zhàn)安居客房產(chǎn)經(jīng)紀(jì)人信息采集,訪問的網(wǎng)頁是靜態(tài)網(wǎng)頁,有朋友模仿那個(gè)實(shí)戰(zhàn)來采集動(dòng)態(tài)加載豆瓣小組的網(wǎng)頁,結(jié)果不成功。 showImg(https://segmentfault.com/img/bVzdNZ); 1, 引言 注釋:上一篇《Python爬蟲實(shí)戰(zhàn)(3):安居客房產(chǎn)經(jīng)紀(jì)人信息采集》,訪問的網(wǎng)頁是靜態(tài)網(wǎng)頁,有朋友模仿那個(gè)實(shí)戰(zhàn)來采集動(dòng)態(tài)加載豆瓣小組的網(wǎng)頁,結(jié)果不成功...

    blastz 評(píng)論0 收藏0
  • Python_selenium_phantomjs動(dòng)態(tài)抓取

    摘要:當(dāng)前版本是一個(gè)服務(wù)器端的的。也可以說是無界面瀏覽器。安裝不是程序,去官網(wǎng)下載對(duì)應(yīng)系統(tǒng)版本的安裝即可。方法會(huì)一直等到頁面被完全加載,然后才會(huì)繼續(xù)程序,但是對(duì)于是無可奈何的。安裝設(shè)置的查看所有可用的屬性。 selenium:https://github.com/SeleniumHQ...當(dāng)前版本3.0.1A browser automation framework and ecosyste...

    zacklee 評(píng)論0 收藏0
  • Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---37、動(dòng)態(tài)渲染頁面抓取:Selenium

    摘要:不過動(dòng)態(tài)渲染的頁面不止這一種。再有淘寶這種頁面,它即使是獲取的數(shù)據(jù),但是其接口含有很多加密參數(shù),我們難以直接找出其規(guī)律,也很難直接分析來抓取。我們用一個(gè)實(shí)例來感受一下在這里們依然是先打開知乎頁面,然后獲取提問按鈕這個(gè)節(jié)點(diǎn),再將其 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---36、分析Ajax爬取今日頭條街拍美圖下一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---38、動(dòng)態(tài)渲染頁面抓取:Spla...

    zhjx922 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

ymyang

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<