selenium模块

Posted louyifei0824

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium模块相关的知识,希望对你有一定的参考价值。

selenium模块介绍

知识点:
1. 导入webdriver
2. 创建webdriver对象
3. 设置无界面运行
4. 设置窗口大小
5. implicitly_wait
6. driver.find_element_by_xpath(‘‘)
7. element.find_element_by_xpath(‘‘)
8. element.get_attribute(‘title‘)
9. 翻页,最后执行click,防止StaleElementReferenceException异常出现

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException

options = webdriver.ChromeOptions()
# 设置无界面运行 options.add_argument(
headless) # 创建一个Chrome浏览器对象,并将option绑定上 driver = webdriver.Chrome(chrome_options=options)
# 设置窗口的大小 driver.set_window_size(
1920, 1080)
# 设置窗口为全屏模式
# driver.fullscreen_window()
# 获取窗口的x,y坐标及当前窗口的宽度和高度
# print(driver.get_window_rect())
# 给driver设置等待时间5s,如果页面加载完成则获取,未加载完成则等待
driver.implicitly_wait(5) url = http://www.zongheng.com/rank/details.html?rt=6&d=1&p=1
# 通过driver发送一个get请求 url
driver.get(url) import time while True: # 爬取某页中的所有书籍信息 book_list = driver.find_elements_by_xpath( //div[contains(@class,"rank_d_list")]) print(book_list) for book in book_list: name = book.get_attribute(bookname) href = book.find_element_by_xpath(.//div/a).get_attribute(href) author = book.find_element_by_xpath(.//div[2]/div[2]).get_attribute( title) info = book.find_element_by_xpath(.//div[2]/div[3]).text print(name, href, author, info) try: # 找到下一页 next_page = driver.find_element_by_xpath(//a[@title="下一页"]) except NoSuchElementException as e: print(爬取完毕!) break else: time.sleep(2) print(开始爬取第{page}页.format(page=next_page.get_attribute(page))) #next_page.click()要放到最后,否则抛出"StaleElementReferenceException" next_page.click()

webdriver的一些其他方法

from selenium import webdriver
driver = webdriver.Chrome()

# 关闭当前的窗口
1. close()
# 关闭所有的窗口
2. quit()
# 执行javascript语句
3. execute_script(script,* args )
# 在当前会话中设置cookie的值
4. add_cookie(cookie_dict )
# 删除会话中的所有cookie
5. delete_all_cookies()
# 通过类名找元素
6. find_element_by_class_name(名字)
# 通过css选择器找元素
7. find_element_by_css_selector(css_selector )
# 通过id找元素
8. find_element_by_id(id_ )
# 按照链接文本找元素
9. find_element_by_link_text(link_text )
# 按照名称查找元素
10. find_element_by_name(名字)
# 按照链接文本的部分来匹配查找元素
11. find_element_by_partial_link_text(link_text )
# 按照标签名称来查找元素
12. find_element_by_tag_name(名字)
# 通过xpath来查找元素
13. find_element_by_xpath(xpath )
# 获取窗口的x,y坐标及宽度和高度
14. get_window_rect()
# 获取当前页面的url
15. current_url
# 返回当前窗口的句柄
16. current_window_handle
# 返回当前会话中的所有句柄
17. window_handles
# 模拟键入元素,必须是一个input框,可以往里面填值
18. send_keys()
# 点击
19. click()
# 提交
20. submit()



 





























以上是关于selenium模块的主要内容,如果未能解决你的问题,请参考以下文章

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

爬虫selenium模块

Selenium JavascriptExecutor 详解

Selenium JavascriptExecutor 详解

如何有条件地将 C 代码片段编译到我的 Perl 模块?

有没有办法关闭代码片段中的命名建议?