国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Python爬蟲(chóng)信息輸入及頁(yè)面的切換方法

2020-02-23 00:05:56
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

實(shí)現(xiàn)網(wǎng)頁(yè)的鍵盤(pán)輸入操作

from selenium.webdriver.common.keys import Keys 動(dòng)態(tài)網(wǎng)頁(yè)有時(shí)需要將鼠標(biāo)懸停在某個(gè)元素上,相應(yīng)的列表選項(xiàng)才能顯示出來(lái)。 而爬蟲(chóng)在工作的時(shí)候也需要相應(yīng)的操作,才能獲得列表項(xiàng)。 driver.find_element_by_class_name(...).send_keys(需要輸入的字串) #find_element_by_class_name可以是find_element_by_link_text、find_element_by_id等其他方式 #send_keys一些特殊字符串,可以通過(guò)help(Keys)顯示出來(lái),如實(shí)現(xiàn)按回車操作需要使用Keys.ENTER 

實(shí)現(xiàn)網(wǎng)頁(yè)上的鼠標(biāo)的動(dòng)作

driver.find_element_by_link_text('更多').click()#需要指示到/a鏈接的位置

#同樣find_element_by_link_text可以是find_element_by_id等類似的其他方式

使用ActionChains可以實(shí)現(xiàn)鼠標(biāo)的更多操作

from selenium.webdriver.common.action_chains import *

ActionChains中的操作:

click() -- 單擊、click_and_hold()-- 按下鼠標(biāo)左鍵在一個(gè)元素上、context_click() --單擊、double_click()--雙擊、drag_and_drop()--拖動(dòng)、key_down()、key_up()、move_by_offset()、move_to_elment()、move_to_elment_with_offset()

動(dòng)態(tài)網(wǎng)頁(yè)鼠標(biāo)操作及遇到的問(wèn)題

動(dòng)態(tài)網(wǎng)頁(yè)有時(shí)需要將鼠標(biāo)懸停在某個(gè)元素上,相應(yīng)的列表選項(xiàng)才能顯示出來(lái)。而爬蟲(chóng)在工作的時(shí)候也需要相應(yīng)的操作,才能獲得列表項(xiàng)。

#首先需要將鼠標(biāo)停留到相應(yīng)的元素chain = ActionChains(driver)moveelment = driver.find_element_by_xpath("...")chain.move_to_element(moveelment).perform()driver.find_element_by_xpath("http://div[@class='search-condition c5 drop-down']/a/div").click()#而后進(jìn)行選擇列表項(xiàng)driver.find_element_by_xpath("http://ul[@id='category_list']/li[1]/a").click()driver.find_element_by_xpath("http://ul[@id='category_list']/li[2]/a").click()

而當(dāng)想要進(jìn)行多列操作時(shí)出現(xiàn)了問(wèn)題:driver.find_element_by_xpath("http://ul[@id='category_list']/li[2]/a").click()一直無(wú)法成功仔細(xì)debug發(fā)現(xiàn):在人工瀏覽查看相應(yīng)列表時(shí),全屏情況下列表顯示是3列,而當(dāng)需要聚焦特殊網(wǎng)頁(yè)時(shí),通過(guò)解析current_url進(jìn)行比較即可,是否存在更好的方法。如果窗口很小就只能顯示第一列的值。所以嘗試將爬蟲(chóng)后臺(tái)瀏覽器窗口設(shè)置成最大化,程序正常工作,如下:

#... ... driver.find_element_by_xpath("http://ul[@id='category_list']/li[1]/a").click() driver.maximize_window()  time.sleep(1) driver.find_element_by_xpath("http://ul[@id='category_list']/li[2]/a").click() 

關(guān)于窗口的頁(yè)面切換方式

經(jīng)常在網(wǎng)頁(yè)操作時(shí),會(huì)彈出新的頁(yè)面,而爬蟲(chóng)需要程序進(jìn)行窗口間的切換。

#切換網(wǎng)頁(yè),以獲取新彈出的網(wǎng)頁(yè)窗口 for handle in driver.window_handles:   driver.switch_to_window(handle)   print('current url:%s'%driver.current_url) 

當(dāng)需要聚焦特殊網(wǎng)頁(yè)時(shí),通過(guò)解析current_url進(jìn)行比較即可,是否存在更好的方法。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 手机| 深泽县| 邓州市| 绥阳县| 太和县| 炉霍县| 长治县| 汉中市| 双流县| 麻阳| 林甸县| 滦平县| 三都| 清原| 家居| 普陀区| 蛟河市| 凌源市| 海阳市| 远安县| 太和县| 宜都市| 宽城| 清丰县| 盐池县| 安庆市| 宜阳县| 衡山县| 广安市| 孟州市| 海淀区| 营山县| 扎鲁特旗| 英德市| 阳东县| 沛县| 庆云县| 黑山县| 滦南县| 库伦旗| 新源县|