一、selenium
模拟浏览器功能,自动执行网页中的js代码,实现动态加载
1.1 如何安装selenium
(1)查看浏览器版本
(2)浏览器驱动下载地址
https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
(3)下载与浏览器对应的驱动
(4)将下载的驱动解压,生成一个.exe文件
放入pycharm中
(5)安装selenium
pip install selsnium
1.2 模拟浏览器
# 导入selenium
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# 创建浏览器操作对象
path = 'msedgedriver.exe'
browser = webdriver.Edge(path)
# 访问网站
url = 'https://www.jd.com/'
browser.get(url)
二、元素
2.1 元素定位
模拟鼠标和键盘来操作这些元素,点击、输入等等。
(1)对名字进行定位
button = browser.find_element_by_id(‘su’)
print(button)
(2)对文本框进行定位
button = browser.find_element_by_name(‘wd’)
print(button)
(3)根据xpath语句来获取对象
button = browser.find_elements_by_xpath(‘//input[@id=“su”]’)
print(button)
(4)根据标签的名字来获取对象
button = browser.find_elements_by_tag_name(‘input’)
print(button)
(5)使用的是bs4的语法来获取对象
button = browser.find_elements_by_css_selector(‘#su’)
print(button)
(6)根据链接文本来获取对象
button = browser.find_element_by_link_text(‘地图’)
print(button)
2.2元素信息
(1)获取class的属性值 在get_attribute要传入属性的名字
print(input.get_attribute(‘class’))
(2)获取标签名
print(input.tag_name)
(3)获取元素文本
print(input.text)
a = browser.find_element_by_link_text(‘新闻’)
print(a.text)
2.3交互
模拟真实的浏览器,实现部分操作:
from selenium import webdriver
# 创建浏览器对象
path = 'msedgedriver.exe'
browser = webdriver.Edge(path)
# url
url = 'https://wwww.baidu.com'
browser.get(url)
import time
time.sleep(2)
# 获取文本框的对象
input = browser.find_element_by_id('kw')
# 在文本框中输入周杰伦
input.send_keys('周杰伦')
time.sleep(2)
# 获取百度一下的按钮
button = browser.find_element_by_id('su')
# 点击按钮
button.click()
time.sleep(2)
# 滑到底部
js_bottom = 'document.documentElement.scrollTop=100000'
browser.execute_script(js_bottom)
time.sleep(2)
# 获取下一页的按钮
next = browser.find_element_by_xpath('//a[@class="n"]')
# 点击下一页
next.click()
time.sleep(2)
# 回到上一页
browser.back()
time.sleep(2)
# 回去
browser.forward()
time.sleep(3)
# 退出
browser.quit()
三、无界面浏览器
- phantomjs
- handless