-
python爬虫之Python爬虫之selenium库使用详解(3)
试听地址 https://www.xin3721.com/eschool/pythonxin3721/
这样获得就是一个列表
当然上面的方式也是可以通过导入from selenium.webdriver.common.by import By 这种方式实现
lis = browser.find_elements(By.CSS_SELECTOR,'.service-bd li')
同样的在单个元素中查找的方法在多个元素查找中同样存在:
find_elements_by_name
find_elements_by_id
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector
元素交互操作
对于获取的元素调用交互方法
1
2
3
4
5
6
7
8
9
10
11
|
from selenium import webdriver import time browser = webdriver.Chrome() browser.get( "http://www.taobao.com" ) input_str = browser.find_element_by_id( 'q' ) input_str.send_keys( "ipad" ) time.sleep( 1 ) input_str.clear() input_str.send_keys( "MakBook pro" ) button = browser.find_element_by_class_name( 'btn-search' ) button.click() |
运行的结果可以看出程序会自动打开Chrome浏览器并打开淘宝输入ipad,然后删除,重新输入MakBook pro,并点击搜索
Selenium所有的api文档:http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains
交互动作
将动作附加到动作链中串行执行
1
2
3
4
5
6
7
8
9
10
11
|
from selenium import webdriver from selenium.webdriver import ActionChains browser = webdriver.Chrome() url = "http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable" browser.get(url) browser.switch_to.frame( 'iframeResult' ) source = browser.find_element_by_css_selector( '#draggable' ) target = browser.find_element_by_css_selector( '#droppable' ) actions = ActionChains(browser) actions.drag_and_drop(source, target) actions.perform() |
更多操作参考:http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains
执行JavaScript
这是一个非常有用的方法,这里就可以直接调用js方法来实现一些操作,
下面的例子是通过登录知乎然后通过js翻到页面底部,并弹框提示
1
2
3
4
5
|
from selenium import webdriver browser = webdriver.Chrome() browser.get( "http://www.zhihu.com/explore" ) browser.execute_script( 'window.scrollTo(0, document.body.scrollHeight)' ) browser.execute_script( 'alert("To Bottom")' ) |