selenium模拟浏览器行为
1.首先进行下载浏览器的驱动
2.导入到文件中
3.运行程序
# 导入selenium
from selenium import webdriver
# 创建浏览器--驱动路径
path = 'chromedriver.exe'
browser = webdriver.Chrome(path)
# 访问网站
url = 'https://www.xx.com'
browser.get(url)
查看效果:
可看到浏览器受到自动测试软件的控制
我们看到页面有文本框,我们实现这样的功能,我们自动获取文本框,完成文本框的输入,点击发送。
首先我们需要获得文本框:
元素定位:
1.find_element_by_name
2.find_element_by_id
3.byxpath
4.bytagname
5.bycss_selector
6.bylink_text
# 元素定位 根据id找对象
button = browser.find_element_by_id('su')
# 根据name找对象 根据标签属性的属值来找对象
button = browser.find_element_by_name('wd')
# 根据xpath获取对象
button = browser.find_element_by_xpath('//input[@id="su"]')
# 根据标签的名字
button = browser.find_element_by_tag_name('su')
# 使用的是bs4的语法获取对象
button = browser.find_element_by_css_selector('#su')
button =browser.find_element_by_link_text('直播')
访问元素信息:
获取元素属性get_attribute('class')
获取元素文本text
获取标签名tag_name
# 元素定位 根据id找对象
input = browser.find_element_by_id('su')
# 获取属性值
print(input.get_attribute('class'))
print(input.tag_name)
print(input.text)
time.sleep(2)
# 元素定位 根据id找对象
input = browser.find_element_by_id('kw')
# 在文本框输入
input.send_keys('毛不易')
time.sleep(2)
# 获取元素
button = browser.find_element_by_id('su')
button.click()
time.sleep(3)
# 实现滑动
js_bottom = 'document.documentElement.scrollTop=100000'
browser.execute_script(js_bottom)
time.sleep(2)
# 下一页
next_page = browser.find_element_by_xpath('//a[@class="n"]')
next_page.click()
time.sleep(3)
# 回上一页
browser.back()
time.sleep(2)
# 返回
browser.forward()
time.sleep(2)
browser.quit()
由于打开页面比较慢,使用无界面浏览器:phantomjs或者chrome handless
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-gpu")
# chrome的路径
path = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
chrome_options.binary_location = path
# 以上是handless的配置
browser = webdriver.Chrome(chrome_options=chrome_options)
url = 'https://www.xx.com'
browser.get(url)
browser.save_screenshot('baidu.png')