⑴ python selenium如何點擊頁面table列表中的元素
1.通過selenium定位方式(id、name、xpath等方式)定位table標簽
#html源碼<table
border="5"
id="table1"
width="80%">#selenium操作代碼table1=driver.find_element_by_id('table1')
2.獲取總行數(也就是獲取tr標簽的個數)
#html源碼<tr><th>姓名</th><th>性別</th></tr>#selenium操作源碼
table_rows
=
table1.find_elements_by_tag_name('tr')
3.獲取總列數(也就是tr標簽下面的th標簽個數)
#html源碼<tr><th>姓名</th><th>性別</th></tr>#selenium操作源碼:第一個tr標簽下有多少個th
table_rows
=
table_rows[0].find_elements_by_tag_name('th')
4.獲取單個cell值
#selenium操作源碼:第一行第二列的text值row1_col2
=
table_rows[1].find_elements_by_tag_name('td')[1].text
5.取值比對~
⑵ python selenium page_source 獲取的html源碼跟看到的不一樣
page_source 得到的是靜態源代碼,不含js內容
需要使用find_element_by 等方法定位元素獲取
⑶ selenium源碼如何下載
http://seleniumhq.org/download/
這個頁面可以下載到
⑷ python下用selenium的webdriver包如何在執行完點擊下一頁後獲得下一頁新打開頁面的html源代碼呢
這個可以通過瀏覽器自帶的f12 ,或者通過滑鼠右鍵,審計元素獲得當前html源代碼
⑸ python selenium如何獲取下一頁的html網頁源碼
一開始,基本上很多人都是用selenium IDE錄制腳本開始的,我也是!有一本書寫得很不錯:selenium初學者指南!So,從錄制回放開始我的selenium,而在這個過程中,不斷地去補充我的html css知識,熟悉selenium的api!
慢慢地,發現錄制的腳本在回放的時候經常報錯,通過檢查發現,是定位上的錯誤,導致這種定位的錯誤的最大原因是系統前端採用了某種框架,如tigerUI,exj....所以HTML裡面的標簽很多都是動態的,比如id,class,name!這對selenium操作定位的元素而進行自動化來說是致命傷!
所以,開始自己寫定位信息,這已經是必須的了!從而學習了xpth和css選擇器,掌握了更加有效,快速和穩定地定位頁面上的元素(定位的時候難免會碰到有iframe,這就得先切換到iframe中再進行定位了)!也就是,在selenium IDE上寫腳本!
信心滿滿地在selenium IDE上寫了長長地一段腳本,並且反復跑都能成功!總算嘗到了一點點幸福的滋味!然後呢,問題來了,當我要修改和擴展這段的腳本的時候,才發現這效率是相當地低!一句句查!一句句改!多麼痛的領悟!
另外,selenium IDE 默認啟動的是火狐,在使用selenium RC 啟動 IE 進行跑腳本時瀏覽器總是會報錯!各種搞不定,各種不淡定!決定放棄使用IDE!
selenium有一個強大之處就是支持多種語方:java,C#,python等等,並且可以把錄制的腳本轉換成代碼!我用的是java,果斷走起!
不用說,當然是把腳本轉為java代碼了,在E www.hbbz08.com clipse中重新開始搞!
選擇一個測試框架:有Junit和TestNg兩個選擇,公司用的是junit,所以,不用多說,我就用junit驗證selenium腳本的運行結果!並且,Junit和TestNG都可以生成比較直觀的測試報告!
寫好一些代碼,會看到整段代碼中密密麻麻充斥著基本相同的代碼:開始封裝代碼!把常用到API封裝起來!封裝好之後代碼看著就舒服多了!
接下來,是不是也應該把代碼中的定位信息用一個專門的文件放起來,再去讀取裡面的定位信息,這樣,維護代碼和維護定位信息就放在了兩個地方,不用老是扎在代碼和定位路徑中,簡單地分一下層!果斷嘗試!
⑹ python用selenium獲取網頁的源碼,如何放在re里。我的錯誤代碼如下:
給re的數據類型有錯,希望值是字元串,提供的確實其他類型
⑺ python,求一個簡單的selenium+re的網頁源碼爬取
網頁爬取不一定要用Selenium,Selenium是為了注入瀏覽器獲取點擊行為的調試工具,如果網頁無需人工交互就可以抓取,不建議你使用selenium。要使用它,你需要安裝一個工具軟體,使用Chrome瀏覽器需要下載chromedriver.exe到system32下,如使用firefox則要下載geckodriver.exe到system32下。下面以chromedriver驅動chrome為例:
#-*-coding:UTF-8-*-
fromseleniumimportwebdriver
frombs4importBeautifulSoup
importre
importtime
if__name__=='__main__':
options=webdriver.ChromeOptions()
options.add_argument('user-agent="Mozilla/5.0(Linux;Android4.0.4;GalaxyNexusBuild/IMM76B)AppleWebKit/535.19(KHTML,likeGecko)Chrome/18.0.1025.133MobileSafari/535.19"')
driver=webdriver.Chrome()
driver.get('url')#你要抓取網路文庫的URL,隨便找個幾十頁的替換掉
html=driver.page_source
bf1=BeautifulSoup(html,'lxml')
result=bf1.find_all(class_='rtcspage')
bf2=BeautifulSoup(str(result[0]),'lxml')
title=bf2.div.div.h1.string
pagenum=bf2.find_all(class_='size')
pagenum=BeautifulSoup(str(pagenum),'lxml').span.string
pagepattern=re.compile('頁數:(d+)頁')
num=int(pagepattern.findall(pagenum)[0])
print('文章標題:%s'%title)
print('文章頁數:%d'%num)
whileTrue:
num=num/5.0
html=driver.page_source
bf1=BeautifulSoup(html,'lxml')
result=bf1.find_all(class_='rtcspage')
foreach_resultinresult:
bf2=BeautifulSoup(str(each_result),'lxml')
texts=bf2.find_all('p')
foreach_textintexts:
main_body=BeautifulSoup(str(each_text),'lxml')
foreachinmain_body.find_all(True):
ifeach.name=='span':
print(each.string.replace('xa0',''),end='')
elifeach.name=='br':
print('')
print(' ')
ifnum>1:
page=driver.find_elements_by_xpath("//div[@class='page']")
driver.execute_script('arguments[0].scrollIntoView();',page[-1])#拖動到可見的元素去
nextpage=driver.find_element_by_xpath("//a[@data-fun='next']")
nextpage.click()
time.sleep(3)
else:
break
執行代碼,chromedriver自動為你打開chrome瀏覽器,此時你翻頁到最後,點擊閱讀更多,然後等一段時間後關閉瀏覽器,代碼繼續執行。
⑻ 源碼里有的東西,為什麼我用selenium提取不到
有網友碰到過這樣的如何用python的selenium提取頁面所有資源載入的鏈接,問題詳細內容為:如何用python的selenium提取頁面所有資源載入的鏈接,我搜你通過互聯網收集了相關的一些解決方案,希望對有過相同或者相似問題的網友提供幫助,具體如下:
解決方案1:
用瀏覽器打開你那個連接(完整載入),通過 查看源 找到你要的數據(記住標記,比如某個元素),selenium+python獲取到頁面代碼再去判斷查找你的標記就知道是否載入完了。
用python selenium提取網頁中的所有<a>標簽中的超...
答:提取所有鏈接應該用循環: urls = driver.find_elements_by_xpath("//a")for url in urls: print(url.get_attribute("href"))如果get_attribute方法報錯應該是沒有找到a標簽對象,如果確定是有的話,可能是頁面載入比較慢還沒載入出來,selenium...
如何用python的selenium提取頁面所有資源載入的鏈接
答:用瀏覽器打開你那個連接(完整載入),通過 查看源 找到你要的數據(記住標記,比如某個元素),selenium+python獲取到頁面代碼再去判斷查找你的標記就知道是否載入完了
⑼ python下用selenium的webdriver包如何取得打開頁面的html源代碼呢
這個可以通過瀏覽器自帶的f12 。
或者通過滑鼠右鍵,審計元素獲得當前html源代碼。