當前位置:首頁 » 編程語言 » pythonselenium截圖

pythonselenium截圖

發布時間: 2023-09-21 03:34:48

㈠ 如何用python爬取網頁中隱藏的div內容

你說的隱藏的div內容,應該是動態載入的數據吧,不在網頁源碼中顯示,只在載入網頁時才請求數據進行顯示,一般情況下,這種數據都保存在一個json文件中,只要抓包分析出這個json文件的url地址,然後再根據json文件結構進行解析,很快就能獲取到動態載入的div數據,下面我以爬取人人貸上面的散標數據為例,簡單介紹一下python如何爬蘆枝取div動態載入的數據,實驗環境win10+python3.6+pycharm5.0,主要步驟如下:

1.首先,打開散標數族咐據,如下,爬取的信息主要包括年利率、借款標題、期限、金額和進度這5個欄位信息:

右鍵對應元素進行檢查,可以看出所有的數據嵌套在div標簽中,如下:

打開網頁源碼,我們按Ctrl+F查找對應的數據,會發現所查找的數據都未在網頁源碼中,如下,即數據都是動態載入,所以直接解析原網頁是找不到div嵌套的數據的:

2.接著,我們按F12調出開發者工具,依次點擊「Network」->「XHR」,F5刷新頁面,就會看到動態載入的json文件,查看這個文件,內容如下,左邊為json文件的url地址,右邊就是我們需要爬取的div數據:

3.最後對應上面的json文件,我們就可以直接獲取並解析json了,這里主要用到requests和json這2個模塊,其中requests用於根據url地址獲取json文件,json用於解析json文件,提取出我們所需要的信息,即div動態載入的數據,測試代碼如下,非常簡單:

運行程序,截圖如下,已經成功爬取到div載入的數據:

至此,我們就完成了利用python爬取div動態載入的數據。總的來說,整個過程非常簡單,最主要的陪穗敏還是抓包分析,只要你有一定的爬蟲基礎,熟悉一下上面的代碼,多調試幾遍程序,很快就能掌握的,當然,你也可以使用selenium進行爬取,直接解析就行,網上也有相關教程和資料可供參考,非常豐富,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言。

㈡ 如何在python中使用selenium

下載python版本的python包,放入到python的lib下面,然後下載selenium的jar。

啟動使用java -jar selenium-server-standalone-2.0b3.jar
測試例子:

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time

browser = webdriver.Firefox() # Get local session of firefox
browser.get("") # Load page
assert "Yahoo!" in browser.title
elem = browser.find_element_by_name("p") # Find the query box
elem.send_keys("seleniumhq" + Keys.RETURN)
time.sleep(0.2) # Let the page load, will be added to the API
try:
browser.find_element_by_xpath("//a[contains(@href,'')]")
except NoSuchElementException:
assert 0, "can't find seleniumhq"
browser.close()

運行的結果是打開雅虎瀏覽器搜素seleniuhq,然後查找

Selenium (SeleniumHQ) 是 thoughtworks公司的一個集成測試的強大工具。
一、Selenium 的版本
Selenium 現在存在2個版本,一個叫 selenium-core, 一個叫selenium-rc 。
selenium-core 是使用HTML的方式來編寫測試腳本,你也可以使用 Selenium-IDE來錄制腳本,但是目前Selenium-IDE只有 FireFox 版本。
Selenium-RC 是 selenium-remote control 縮寫,是使用具體的語言來編寫測試類。
selenium-rc 支持的語言非常多,這里我們著重關注java的方式。這里講的也主要是 selenium-rc,因為個人還是喜歡這種方式.
下圖是Selenium IDE的運行界面截圖:

㈢ 如何用python+selenium+phantomjs獲得一個網頁的動態生成的html代碼

一般我們使用python的第三方庫requests及框架scrapy來爬取網上的資源,但是設計javascript渲染的頁面卻不能抓取,此時,我們使用web自動化測試化工具Selenium+無界面瀏覽器PhantomJS來抓取javascript渲染的頁面,下面實現一個簡單的爬取

環境搭建

准備工具:python3.5,selenium,phantomjs

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

安裝Selenium

1pip3 install selenium

安裝Phantomjs

按照系統環境下載phantomjs,下載完成之後,將phantomjs.exe解壓到python的script文件夾

使用selenium+phantomjs實現簡單爬蟲

123456789fromselenium import webdriverdriver = webdriver.PhantomJS()driver.get('http.com') #載入網頁data = driver.page_source #獲取網頁文本driver.save_screenshot('1.png') #截圖保存print(data)driver.quit()

selenium+phantomjs的一些使用方法

設置請求頭里的user-Agent

123456789101112fromselenium import webdriverfromselenium.webdriver.common.desired_capabilities import DesiredCapabilitiesdcap = dict(DesiredCapabilities.PHANTOMJS) #設置useragentdcap['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('h.com') #載入網頁data = driver.page_source #獲取網頁文本driver.save_screenshot('1.png') #截圖保存print(data)driver.quit()

請求超時設置

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

1.pageLoadTimeout 設置頁面完全載入的超時時間,完全載入即完全渲染完成,同步和非同步腳本都執行完

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

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

1234567fromselenium import webdriverdriver = webdriver.PhantomJS()driver.set_page_load_timeout(5) #設置超時時間driver.get('htt.com')print(driver.title)driver.quit()

設置瀏覽器窗口大小

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

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

元素定位

import webdriverdriver = webdriver.PhantomJS()driver.set_page_load_timeout(5)driver.get('i.com')try:driver.get('.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("//input[@id='kw']") # 通過xpath方式定位driver.find_element_by_link_text("貼吧") # 通過xpath方式定位print(driver.find_element_by_id('kw').tag_name ) # 獲取標簽的類型except Exceptionase:print(e)driver.quit()

操作瀏覽器前進或後退

import webdriverdriver = webdriver.PhantomJS()try:driver.get('httai.com') #訪問網路首頁driver.save_screenshot('1.png')driver.get('ht.sina.com.cn') #訪問新浪首頁driver.save_screenshot('2.png')driver.back() #回退到網路首頁driver.save_screenshot('3.png')driver.forward() #前進到新浪首頁driver.save_screenshot('4.png')except Exceptionase:print(e)driver.quit()

好文要頂關注我收藏該文

㈣ python抓取網頁時是如何處理驗證碼的

python抓取網頁時是如何處理驗證碼的?下面給大家介紹幾種方法:

1、輸入式驗證碼

這種驗證碼主要是通過用戶輸入圖片中的字母、數字、漢字等進行驗證。如下圖:

解決思路:這種是最簡單的一種,只要識別出裡面的內容,然後填入到輸入框中即可。這種識別技術叫OCR,這里我們推薦使用Python的第三方庫,tesserocr。對於沒有什麼背影影響的驗證碼如圖2,直接通過這個庫來識別就可以。但是對於有嘈雜的背景的驗證碼這種,直接識別識別率會很低,遇到這種我們就得需要先處理一下圖片,先對圖片進行灰度化,然後再進行二值化,再去識別,這樣識別率會大大提高。

相關推薦:《Python入門教程》

2、滑動式驗證碼

這種是將備選碎片直線滑動到正確的位置,如下圖:

解決思路:對於這種驗證碼就比較復雜一點,但也是有相應的辦法。我們直接想到的就是模擬人去拖動驗證碼的行為,點擊按鈕,然後看到了缺口的位置,最後把拼圖拖到缺口位置處完成驗證。

第一步:點擊按鈕。然後我們發現,在你沒有點擊按鈕的時候那個缺口和拼圖是沒有出現的,點擊後才出現,這為我們找到缺口的位置提供了靈感。

第二步:拖到缺口位置。

我們知道拼圖應該拖到缺口處,但是這個距離如果用數值來表示?

通過我們第一步觀察到的現象,我們可以找到缺口的位置。這里我們可以比較兩張圖的像素,設置一個基準值,如果某個位置的差值超過了基準值,那我們就找到了這兩張圖片不一樣的位置,當然我們是從那塊拼圖的右側開始並且從左到右,找到第一個不一樣的位置時就結束,這是的位置應該是缺口的left,所以我們使用selenium拖到這個位置即可。

這里還有個疑問就是如何能自動的保存這兩張圖?

這里我們可以先找到這個標簽,然後獲取它的location和size,然後 top,bottom,left,right = location['y'] ,location['y']+size['height']+ location['x'] + size['width'] ,然後截圖,最後摳圖填入這四個位置就行。

具體的使用可以查看selenium文檔,點擊按鈕前摳張圖,點擊後再摳張圖。最後拖動的時候要需要模擬人的行為,先加速然後減速。因為這種驗證碼有行為特徵檢測,人是不可能做到一直勻速的,否則它就判定為是機器在拖動,這樣就無法通過驗證了。

3、點擊式的圖文驗證和圖標選擇

圖文驗證:通過文字提醒用戶點擊圖中相同字的位置進行驗證。

圖標選擇: 給出一組圖片,按要求點擊其中一張或者多張。借用萬物識別的難度阻擋機器。

這兩種原理相似,只不過是一個是給出文字,點擊圖片中的文字,一個是給出圖片,點出內容相同的圖片。

這兩種沒有特別好的方法,只能藉助第三方識別介面來識別出相同的內容,推薦一個超級鷹,把驗證碼發過去,會返回相應的點擊坐標。

然後再使用selenium模擬點擊即可。具體怎麼獲取圖片和上面方法一樣。

4、宮格驗證碼

這種就很棘手,每一次出現的都不一樣,但是也會出現一樣的。而且拖動順序都不一樣。

但是我們發現不一樣的驗證碼個數是有限的,這里採用模版匹配的方法。我覺得就好像暴力枚舉,把所有出現的驗證碼保存下來,然後挑出不一樣的驗證碼,按照拖動順序命名,我們從左到右上下到下,設為1,2,3,4。上圖的滑動順序為4,3,2,1,所以我們命名4_3_2_1.png,這里得手動搞。當驗證碼出現的時候,用我們保存的圖片一一枚舉,與出現這種比較像素,方法見上面。如果匹配上了,拖動順序就為4,3,2,1。然後使用selenium模擬即可。

熱點內容
怎麼查詢電腦ip地址和dns伺服器 發布:2025-02-02 02:57:50 瀏覽:238
資料庫應用系統的概念 發布:2025-02-02 02:44:46 瀏覽:547
存儲甘油違法 發布:2025-02-02 02:35:36 瀏覽:990
壓縮譜寫法 發布:2025-02-02 02:26:33 瀏覽:936
ipad電子書上傳 發布:2025-02-02 02:22:14 瀏覽:403
堅果郵件怎麼配置 發布:2025-02-02 02:15:14 瀏覽:333
安卓跟h5哪個好 發布:2025-02-02 02:07:56 瀏覽:853
vcjava 發布:2025-02-02 02:06:27 瀏覽:339
航海世紀55區是什麼伺服器 發布:2025-02-02 02:01:22 瀏覽:836
php獲取當前年 發布:2025-02-02 01:50:41 瀏覽:160