新聞中心
Selenium是一個廣泛使用的自動化測試框架,主要用于Web應(yīng)用程序測試。然而,Selenium的應(yīng)用領(lǐng)域不僅僅限于測試,它也可以被用來抽取或提取一個或多個網(wǎng)頁上的數(shù)據(jù)。而在這個過程中,數(shù)據(jù)庫的應(yīng)用也變得非常重要。

在此文中,我們將探討如何使用Selenium和數(shù)據(jù)庫結(jié)合起來,有效地從表格中獲取數(shù)據(jù)。
之一步:打開網(wǎng)頁
最初,我們需要使用Selenium打開一個網(wǎng)頁。我們可使用Python API和web驅(qū)動程序來做到這一點。例如,對于Chrome瀏覽器,我們可以使用ChromeDriver。
下面是一段用Python來打開谷歌瀏覽器網(wǎng)站的例子:
“`
from selenium import webdriver
driver = webdriver.Chrome(“/usr/lib/chromium-browser/chromedriver”)
driver.get(“https://www.google.com/”)
“`
你將需要手動安裝ChromeDriver,以便在上面的代碼中使用它。如果已經(jīng)安裝了,請確保指定了正確的路徑。
第二步:定位數(shù)據(jù)表格
一旦網(wǎng)頁被加載進來,我們就需要定位表格,從而能夠提取數(shù)據(jù)。對此,我們可以使用Selenium提供的不同方式。
例如,如果表格帶有唯一的id,您可以使用find_element_by_id()和它的標識符,如下所示:
“`
table_element = driver.find_element_by_id(“mytable”)
“`
如果表格沒有id,但帶有唯一的類,可以使用find_element_by_class_name()和類名來定位表格:
“`
table_element = driver.find_element_by_class_name(“mytableclass”)
“`
第三步:提取數(shù)據(jù)
在確定表格位置后,接下來需要從表格中提取數(shù)據(jù)了。雖然有多種方法可以做到這一點,但使用Pandas庫是最簡單的。
您需要使用Selenium提供的方法將數(shù)據(jù)提取到Pandas中。這可以通過以下方式實現(xiàn):
“`
import pandas as pd
table_html = table_element.get_attribute(‘outerHTML’)
df = pd.read_html(table_html)[0]
“`
這將使Selenium將表格HTML提取并將其放入變量table_html中。然后,Pandas使用這個HTML把表格轉(zhuǎn)換為數(shù)據(jù)框?qū)ο骴f。
最終,您可以將數(shù)據(jù)存儲到數(shù)據(jù)庫中。在本例中,我們將使用SQLite數(shù)據(jù)庫。
要使用Python的內(nèi)置sqlite3模塊連接到數(shù)據(jù)庫:
“`
import sqlite3
conn = sqlite3.connect(‘mydb.sqlite’)
“`
隨后,將Pandas數(shù)據(jù)框?qū)ο髮С龅綌?shù)據(jù)庫中:
“`
df.to_sql(‘mytable’, con=conn, if_exists=’replace’)
“`
這將創(chuàng)建一個名為“mytable”的表,其中包含從網(wǎng)頁中提取的數(shù)據(jù)。
使用Selenium和數(shù)據(jù)庫結(jié)合,可以非常輕松地從表格中提取數(shù)據(jù)。通過Pandas將網(wǎng)頁中的表格數(shù)據(jù)導入到數(shù)據(jù)庫中,您可以輕松地進行分析、可視化和提取調(diào)用。而通過使用Selenium作為Web自動化測試框架,可節(jié)省時間和精力,讓方法變得更加高效。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù)!
instrumentation test 什么時候調(diào)用setup teardown
這個問題出現(xiàn)在這種情況,你的每個testCase都需要使用某一種初始化比較耗時的對象(資源),舉例如數(shù)據(jù)枯神庫連接、Spring Context。我們遇到的問題是Selenium測試中開啟和關(guān)閉瀏覽器,如果一個test啟動關(guān)閉(我們的程序還需要登錄和注銷),這樣測試的時間會 拖的很長,給持續(xù)集成帶來了困難。
所以,我們需要在每組不會沖突的test中間共享一個瀏覽器窗口,這樣也就需要一個全局的setUp和 tearDown。問題是JUnit 3.8.1里面的setUp和tearDown是在每個test之前和之后運行的,如果在里面初始化沒隱虧和關(guān)閉瀏覽器就會造成上面所說的問題。要解決它,就產(chǎn) 生了如下3種思路:
1、升級,使用JUnit4
JUnit4從TestNG里面吸取了兩個注釋:@BeforeClass和 @AfterClass
用它們注釋過的方法就會只初始化一次,完全符合我們的需求。
public class SeleniumTestCase extends SeleneseTestCase4 {
protected static final Log log = LogFactory.getLog(SeleniumTestCase.class);
protected static Selenium selenium = null;
@BeforeClass
public static void startSelenium() throws Exception {
log.debug(“Starting Selenium”);
selenium = SeleniumSession.getCurrentSession().getSelenium();
}
@AfterClass
public static void stopSelenium() throws Exception {
log.debug(“Stoping Selenium”);
selenium.stop();
}
}
這個里面的selenium = SeleniumSession.getCurrentSession().getSelenium();其實是個singleton,之一次open new,后來就直接返回selenium的instance(具體參考其它文章)。
這樣做非常舒服,因為完全不是Trick,而是新的 feature,用起來踏實。這樣,這個類的所有@Test就會公用一個selenium打開的瀏覽器了。
那么缺點是什么呢?缺點是放到CI環(huán)境 的時候如果使用我們習慣的Ant寫執(zhí)行腳本的話必須將Ant升級到1.7Beta3,因為Ant 1.6.5的Junit task不支持JUnit4……當然升級并不會帶來代碼的變化,但是問題在于Ant 1.7還是Beta,而且JUnit4需要JDK5的Annotation,你的PM估計要撇嘴了
2、JVM級別鉤子法
因為JVM支持關(guān)閉時執(zhí)行制定代碼的鉤子,而static代碼會在類初始化時執(zhí)行, 再加上Ant調(diào)用的是類似命令行的java命令,實際上每一個測試運行在一個完整的JVM啟動關(guān)閉周期攜擾里面,所以也就產(chǎn)生了這種解決方案。
這個方 案來自taowen同學的兩則Selenium經(jīng)驗。
代碼我恢復了一下,大概是這樣:
public abstract class SomeTestCase extends TestCase {
static {
// perform the “global” set up logic
//這里的代碼會在類初始化時執(zhí)行,所以相當于BeforeClass
log.debug(“Starting Selenium”);
selenium = SeleniumSession.getCurrentSession().getSelenium();
// and now register the shutdown hook for tear down logic
//將一個匿名方法寫到這里,就相當于AfterClass
//給當前的進程注冊一個清理線程,當進程退出的時候,會執(zhí)行線程中的代 碼。
Runtime.getRuntime().addShutdownHook(
new Thread(){
public void run() {
log.debug(“Stoping Selenium”);
selenium.stop();
}
}
);
}
}
這 個方法挺酷的,我認為完全可以被稱作“奇技淫巧”。缺點就是,有點不好看。
3、還有別的方法,這個來自Selenium網(wǎng)站,似乎是不錯 的中庸方案。
import junit.framework.*;
import junit.extensions.TestSetup;
public class AllTestsOneTimeSetup {
public static Test suite() {
TestSuite suite = new TestSuite();
suite.addTest(SomeTest.suite());
suite.addTest(AnotherTest.suite());
TestSetup wrapper = new TestSetup(suite) {
protected void setUp() {
oneTimeSetUp();
}
protected void tearDown() {
oneTimeTearDown();
}
};
return wrapper;
}
public static void oneTimeSetUp() {
// one-time initialization code
}
public static void oneTimeTearDown() {
// one-time cleanup code
}
}
Python中的爬蟲框架有哪些呢?
實現(xiàn)爬蟲技術(shù)的編程環(huán)境有很多種,Java、Python、C++等都可以用來爬蟲。但很多人選擇Python來寫爬蟲,為什么呢?因為Python確實很適合做爬蟲,豐富的第三方庫十分強大,簡單幾行代碼便可實現(xiàn)你想要的功能。更重要的,Python也是數(shù)據(jù)挖掘和分析的好能手。那么,Python爬蟲一般用什么框架比較好?
一般來講,只有在遇到比較大型的需求時,才會使用Python爬蟲框架。這樣的做的主要目的,是為了方便管理以及擴展。本文我將向大家推薦十個Python爬蟲框架。
1、Scrapy:Scrapy是一個為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架。 可桐搜晌以應(yīng)用在包括數(shù)據(jù)挖掘,信息處理或存儲歷史數(shù)據(jù)等一系列的程序中。它是很強大的爬蟲框架,可以滿足簡單的頁面爬取,比如可以明確獲知url pattern的情況。用這個框架可以輕松爬下來如亞馬遜商品信息之類的數(shù)據(jù)。但是對于稍微復雜一點的頁面,如weibo的頁面信息,這個框架就滿足不了需求了。它的特性有:HTML, XML源數(shù)據(jù) 選擇及提取 的內(nèi)置支持;提供了一系列在spider之間共享的可復用的過濾器(即 Item Loaders),對智能處理爬取數(shù)據(jù)提供了內(nèi)置支持。
2、Crawley:高速爬取對應(yīng)網(wǎng)站的內(nèi)容,支持關(guān)系和非關(guān)系數(shù)據(jù)庫,數(shù)據(jù)可以導出為ON、XML等。
3、Portia:是一個開源可視化爬蟲工具,可讓使用者在不需要任何編程知識的情況下爬取網(wǎng)站!簡單地注釋自己感興趣的頁面,Portia將創(chuàng)建一個蜘蛛來從類似的頁面提取數(shù)據(jù)。簡單來講,它是基于scrapy內(nèi)核;可視化爬取內(nèi)容,不需要任何開發(fā)專業(yè)知識;動態(tài)匹配相同模板的內(nèi)容。
4、newspaper:可以用來提取新聞、文章和內(nèi)容分析。使用多線程,支持10多種語言等。作者從requests庫的簡潔與強大得到靈感,使用Python開發(fā)的可用于提取文章內(nèi)容的程序。支持10多種語言并且所有的都是unicode編碼。
5、Python-goose:Java寫的文章提取工具。Python-goose框架可提取的信息包括:文章主體內(nèi)容、文章主要圖片、文章中嵌入的任何Youtube/Vimeo視頻、元描述、元標簽。
6、Beautiful Soup:名氣大,整合了一些常用爬蟲需求。它是一個可以從HTML或XML文件中提取漏螞數(shù)據(jù)的Python庫。它能夠通過你喜歡的轉(zhuǎn)換器實現(xiàn)慣用的文檔導航,查找,修改文檔的方式.Beautiful Soup會幫你節(jié)省數(shù)小時甚至數(shù)天的工作時間。Beautiful Soup的缺點是不能加載。
7、mechanize:它的優(yōu)點是可以加載。當然它也有缺點,比如文檔嚴重缺失。不過通過官方的example以及人肉嘗試的方法,還是勉強能用的。
8、selenium:這是一個調(diào)用瀏覽器的driver,通過這個庫你可以直接調(diào)用瀏覽器完成某些操作,比如輸入驗證碼。Selenium是自動化測試工具,它支持各種瀏覽器,包括 Chrome,Safari,F(xiàn)irefox等主流界面式瀏覽器,如果在這些瀏覽器里面安裝一個 Selenium 的插件,可以方便地實現(xiàn)Web界面的測試. Selenium支持瀏覽器驅(qū)動。Selenium支持多種語言開發(fā),比如 Java,C,Ruby等等,Phantom 用來渲染解析,Selenium 用來驅(qū)動以及與Python的對接,Python進行后期的處理。
9、cola:是一個分布式的爬蟲框架,對于用戶來說,只需編寫幾個特定的函數(shù),而無需關(guān)注分布式運行的細節(jié)。任務(wù)會自動分配到多臺機器上,整個過程對用戶是透明的。項目整體設(shè)計有點糟,模塊間耦合度較高。
10、PySpider:一個國人編寫的強大的網(wǎng)絡(luò)爬蟲系統(tǒng)并帶有強大的WebUI。采用Python語言編寫,分布式架構(gòu),支持多種數(shù)據(jù)庫后端,強大的WebUI支持腳本編輯器,任務(wù)監(jiān)視器,項目管理器以及結(jié)果局鋒查看器。Python腳本控制,可以用任何你喜歡的html解析包。
selenium 獲取表格數(shù)據(jù)庫的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于selenium 獲取表格數(shù)據(jù)庫,Selenium與數(shù)據(jù)庫:有效獲取表格數(shù)據(jù),instrumentation test 什么時候調(diào)用setup teardown,Python中的爬蟲框架有哪些呢?的信息別忘了在本站進行查找喔。
創(chuàng)新互聯(lián)-老牌IDC、云計算及IT信息化服務(wù)領(lǐng)域的服務(wù)供應(yīng)商,業(yè)務(wù)涵蓋IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心)服務(wù)、云計算服務(wù)、IT信息化、AI算力租賃平臺(智算云),軟件開發(fā),網(wǎng)站建設(shè),咨詢熱線:028-86922220
本文題目:Selenium與數(shù)據(jù)庫:有效獲取表格數(shù)據(jù)(selenium獲取表格數(shù)據(jù)庫)
分享地址:http://www.5511xx.com/article/dpdgjoo.html


咨詢
建站咨詢
