最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python+selenium+PhantomJS抓取網頁動態(tài)加載內容

 更新時間:2020年02月25日 13:14:16   投稿:mdxy-dxy  
一般我們使用python的第三方庫requests及框架scrapy來爬取網上的資源,但是設計javascript渲染的頁面卻不能抓取,此 時,我們使用web自動化測試化工具Selenium+無界面瀏覽器PhantomJS來抓取javascript渲染的頁面,下面實現(xiàn)一個簡單的爬取

環(huán)境搭建

準備工具:pyton3.5,selenium,phantomjs

我的電腦里面已經裝好了python3.5

安裝Selenium

pip3 install selenium

安裝Phantomjs  

按照系統(tǒng)環(huán)境下載phantomjs,下載完成之后,將phantomjs.exe解壓到python的script文件夾下

使用selenium+phantomjs實現(xiàn)簡單爬蟲

from selenium import webdriver
 
 
driver = webdriver.PhantomJS()
driver.get('http://www.baidu.com')  #加載網頁
data = driver.page_source  #獲取網頁文本
driver.save_screenshot('1.png')  #截圖保存
print(data)
driver.quit()

selenium+phantomjs的一些使用方法

設置請求頭里的user-Agent

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
 
 
dcap = dict(DesiredCapabilities.PHANTOMJS) #設置useragent
dcap['phantomjs.page.settings.userAgent'] = ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0 ') #根據需要設置具體的瀏覽器信息
driver = webdriver.PhantomJS(desired_capabilities=dcap) #封裝瀏覽器信息
driver.get('http://www.baidu.com')  #加載網頁
data = driver.page_source  #獲取網頁文本
driver.save_screenshot('1.png')  #截圖保存
print(data)
driver.quit()

請求超時設置

webdriver類中有三個和時間相關的方法:

1.pageLoadTimeout 設置頁面完全加載的超時時間,完全加載即完全渲染完成,同步和異步腳本都執(zhí)行完

2.setScriptTimeout 設置異步腳本的超時時間

3.implicitlyWait 識別對象的智能等待時間

from selenium import webdriver
 
driver = webdriver.PhantomJS()
driver.set_page_load_timeout(5) #設置超時時間
driver.get('http://www.baidu.com')
print(driver.title)
driver.quit()

設置瀏覽器窗口大小

調用啟動的瀏覽器不是全屏的,有時候會影響我們的某些操作,所以我們可以設置全屏

driver.maximize_window() #設置全屏
driver.set_window_size('480','800') #設置瀏覽器寬480,高800  

元素定位

from selenium import webdriver
 
driver = webdriver.PhantomJS()
driver.set_page_load_timeout(5)
driver.get('http://www.baidu.com')
try:
  driver.get('http://www.baidu.com')
  driver.find_element_by_id('kw') # 通過ID定位
  driver.find_element_by_class_name('s_ipt') # 通過class屬性定位
  driver.find_element_by_name('wd') # 通過標簽name屬性定位
  driver.find_element_by_tag_name('input') # 通過標簽屬性定位
  driver.find_element_by_css_selector('#kw') # 通過css方式定位
  driver.find_element_by_xpath("http://input[@id='kw']") # 通過xpath方式定位
  driver.find_element_by_link_text("貼吧") # 通過xpath方式定位
  print(driver.find_element_by_id('kw').tag_name ) # 獲取標簽的類型
except Exception as e:
  print(e)
driver.quit()

操作瀏覽器前進或后退

from selenium import webdriver
driver = webdriver.PhantomJS()
try:
  driver.get('http://www.baidu.com')  #訪問百度首頁
  driver.save_screenshot('1.png')
  driver.get('http://www.sina.com.cn') #訪問新浪首頁
  driver.save_screenshot('2.png')
  driver.back()              #回退到百度首頁
  driver.save_screenshot('3.png')
  driver.forward()            #前進到新浪首頁
  driver.save_screenshot('4.png')
except Exception as e:
  print(e)
driver.quit()

到此這篇關于python+selenium+PhantomJS抓取網頁動態(tài)加載內容的文章就介紹到這了,更多相關python PhantomJS抓取內容內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Django修改端口號與地址的三種方式

    Django修改端口號與地址的三種方式

    Django是一個開放源代碼的Web應用框架,由Python寫成,下面這篇文章主要給大家介紹了關于Django修改端口號與地址的三種方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • Python實現(xiàn)網站注冊驗證碼生成類

    Python實現(xiàn)網站注冊驗證碼生成類

    這篇文章主要為大家詳細介紹了Python實現(xiàn)網站注冊驗證碼生成類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Python基于OpenCV庫Adaboost實現(xiàn)人臉識別功能詳解

    Python基于OpenCV庫Adaboost實現(xiàn)人臉識別功能詳解

    這篇文章主要介紹了Python基于OpenCV庫Adaboost實現(xiàn)人臉識別功能,結合實例形式分析了Python下載與安裝OpenCV庫及相關人臉識別操作實現(xiàn)技巧,需要的朋友可以參考下
    2018-08-08
  • python使用tkinter實現(xiàn)簡單計算器

    python使用tkinter實現(xiàn)簡單計算器

    這篇文章主要為大家詳細介紹了python使用tkinter實現(xiàn)簡單計算器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python面向對象編程基礎解析(二)

    Python面向對象編程基礎解析(二)

    這篇文章主要介紹了Python面向對象編程基礎解析,具有一定參考價值,需要的朋友可以了解下。
    2017-10-10
  • python版opencv攝像頭人臉實時檢測方法

    python版opencv攝像頭人臉實時檢測方法

    今天小編就為大家分享一篇python版opencv攝像頭人臉實時檢測方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 詳解Python如何生成優(yōu)雅的二維碼

    詳解Python如何生成優(yōu)雅的二維碼

    二維碼作為一種信息傳遞的工具,在當今社會發(fā)揮了重要作用。從手機用戶登錄到手機支付,生活的各個角落都能看到二維碼的存在。下面我們就來看看Python如何生成一個優(yōu)雅的二維碼吧
    2022-09-09
  • Python常見數(shù)據結構之棧與隊列用法示例

    Python常見數(shù)據結構之棧與隊列用法示例

    這篇文章主要介紹了Python常見數(shù)據結構之棧與隊列用法,結合實例形式簡單介紹了數(shù)據結構中棧與隊列的概念、功能及簡單使用技巧,需要的朋友可以參考下
    2019-01-01
  • python使用beautifulsoup4爬取酷狗音樂代碼實例

    python使用beautifulsoup4爬取酷狗音樂代碼實例

    這篇文章主要介紹了python使用beautifulsoup4爬取酷狗音樂代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Python?Matplotlib通過plt.subplots創(chuàng)建子繪圖

    Python?Matplotlib通過plt.subplots創(chuàng)建子繪圖

    這篇文章主要介紹了Python?Matplotlib通過plt.subplots創(chuàng)建子繪圖,plt.subplots調用后將會產生一個圖表和默認網格,與此同時提供一個合理的控制策略布局子繪圖,更多相關需要的朋友可以參考下面文章內容
    2022-07-07

最新評論

宁武县| 罗定市| 青川县| 长宁区| 海南省| 陇西县| 广昌县| 永安市| 慈利县| 云梦县| 文登市| 柞水县| 合江县| 霍邱县| 新巴尔虎左旗| 三穗县| 岢岚县| 玛纳斯县| 青海省| 贡山| 西藏| 大足县| 潜山县| 连城县| 社会| 葵青区| 永吉县| 武功县| 舟山市| 师宗县| 廉江市| 长宁区| 台江县| 稷山县| 郯城县| 永昌县| 虹口区| 阿瓦提县| 大冶市| 奉化市| 会宁县|