爬虫 selenium自动化(牢饭吃到饱)
每天一个入狱小技巧
安装
打开cmd 输入以下内容
原理
- 代码调用webdriver操作浏览器
- 不同的浏览器使用各自不同的driver
根据实际环境选择浏览器 谷歌浏览器/火狐浏览器
使用
from selenium import webdriver import time
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
browser.find_element_by_id('kw').send_keys('史迪奇')
browser.find_element_by_id('su').click
time.sleep(3)
browser.quit()
|
其他操作
browser.page_source
browser.current_url
browser.close()
browser.quit()
browser.forward()
browser.back()
browser.screen_shot(img_name)
|
driver对象定位标签元素获取标签对象方法
find_element_by_id
find_element(s)_by_class_name
find_element(s)_by_name
find_element(s)_by_xpath
find_element(s)_by_link_text
find_element(s)_by_partial_link_text
find_element(s)_by_css
|
特别注意:
- find_element和find_elements的区别:
- 多了给s就返回列表, 没有s就返回匹配到的第一个标签对象
- find_element匹配不到就抛出异常, find_elements匹配不到就返回空列表
- by_link_text和by_partial_link_text的区别:
标签对象提取文本内容和属性值
- 获取文本 element.text
- 通过定位获取的标签对象的 text 属性, 获取文本内容
- 获取属性值 element.get_attribute(“属性名”)
- 通过定位获取的标签对get_attribute 函数, 传入属性名, 来获取获取属性的值
例子
from selenium import webdriver
url = "https://sz.58.com/ershoufang/?PGTID=0d200001-0000-4f6f-f947-87e3a87719a1&ClickID=1"
browser = webdriver.Chrome()
browser.get(url)
el_list = browser.find_elements_by_xpath('//*[@id="__layout"]/div/section/section[3]/section[1]/section[2]/div/a/div[2]/div[1]/div[1]/h3')
for el in el_list: print(el.text,el.get_attribute('href'))
|
标签页的切换
获取所有标签页的窗口句柄
利用窗口句柄字切换句柄指向的标签页
current_windows = browser.window_handles
browser.switch_to.window(current_windous[0])
|
窗口切换
ifame是html中常用的一种技术, 即一个页面嵌套
Windows = browser.window_handles browser.switch_to.window(windows[0]) content = browser.find_element_by_class_name().text print(content) browser.quit()
|
cookies操作
import time from selenium import webdriver
url = "http://www.baidu.com/"
browser = webdriver.Chrome() browser.get(url)
cookies = {data['name'] : data['value']for data in browser.get_cookies()}
print(cookies)
|
关于js执行
import time from selenium import webdriver
url = "http://jn.lianjia.com/"
browser = webdriver.Chrome()
browser.get(url)
js = 'scrollTo(0,900)'
browser.execute_script(js)
|
无界面模式
options = webdriver.ChromeOptions()
options.add_argument("--headless")
options.add_argument("--disable-gpu")
browser = webdriver.Chrome(chrome_options=options)
|
代理
options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=http://202.20.16.82:9527")
options.add_argument("--disable-gpu")
browser = webdriver.Chrome('./chromedriver',chome_options=options)
|
替换user-agent(上网设备)
options = webdriver.ChromeOptions()
options.add_argument("--user-agent=Mozilla/5.0 HAHA")
options.add_argument("--disable-gpu")
browser = webdriver.Chrome('./chromedriver',chome_options=options)
|
作者: 我叫史迪奇
本文来自于:
https://sdq3.link/reptile-selenium.html博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议