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 JavascriptExecutor 详解