目录
(4.1)driver.find_element_by_id('kw') #根据id找到元素
(4.2)利用 driver.find_element_by_xpath() #根据xpath找到元素
6. 利用"百度一下"按钮的xpath,制造点击事件(点击事件)
1.selenium概述
2. python安装selenium
pip install selenium==2.48.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
3. 下载安装chromedriver:(谷歌驱动)
网址:http://npm.taobao.org/mirrors/chromedriver/
4.利用驱动自动化操作浏览器:
# driver.find_element_by_id() #根据id找到元素 # driver.find_element_by_xpath() #根据xpath找到元素 # driver.find_element_by_class_name() #根据类名找到元素 # driver.find_element_by_link_text() #根据链接名找到元素 # driver.find_element_by_partial_link_text() #根据部分链接名找到元素 # driver.find_element_by_tag_name() #根据据标签找到元素 # driver.find_element_by_css_selector() #根据css选择器到元素
(4.1)driver.find_element_by_id('kw') #根据id找到元素
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome(executable_path="chromedriver") #设置驱动
driver.get(url='https://www.baidu.com')
tag = driver.find_element_by_id('kw') #根据id找到元素(如图1)
tag.clear()
tag.send_keys('坂井泉水') # 输入事件
tag.send_keys(Keys.ENTER) #键盘事件
time.sleep(5)
实现了如下自动搜索:
(4.2)利用 driver.find_element_by_xpath() #根据xpath找到元素
from selenium import webdriver
driver = webdriver.Chrome(executable_path="chromedriver") #设置驱动
driver.get(url='https://www.baidu.com')
tag=driver.find_element_by_xpath('//*[@id="s-top-left"]/a[5]').click() #由路径可自行实现点击事件
需求:爬取打印百度导航栏文字
又由于:
故:
from selenium import webdriver driver = webdriver.Chrome(executable_path="chromedriver") #设置驱动 driver.get(url='https://www.baidu.com') tags = driver.find_elements_by_xpath('//*[@id="s-top-left"]/a[@href]') for tag in tags: print(tag.text)
说明:蓝色部分即取出a标签下href属性的那部分内容,即:
5.键盘事件
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from bs4 import BeautifulSoup as BS
driver = webdriver.Chrome(executable_path="chromedriver") #设置驱动
driver.get(url='https://www.baidu.com')
tag = driver.find_element_by_id('kw') #根据id找到元素
tag.clear()
tag.send_keys('坂井泉水') # 输入事件
tag.send_keys(Keys.ENTER) #键盘事件
time.sleep(5)
soup = BS(driver.page_source,'html.parser') #页面解析
results = soup.find_all('div',class_='c-container')
for i in results:
print("*"*100)
print(i.h3.a.attrs['href'])
6. 利用"百度一下"按钮的xpath,制造点击事件(点击事件)
from selenium import webdriver from selenium.webdriver.common.keys import Keys import time driver = webdriver.Chrome(executable_path="chromedriver") #设置驱动 driver.get(url='https://www.baidu.com') tag = driver.find_element_by_xpath('//*[@id="kw"]') tag.clear() tag.send_keys('坂井泉水') # 输入事件 driver.find_element_by_xpath("//*[@id='su']").click() #代替tag.send_keys(Keys.ENTER) #键盘事件 time.sleep(5)
7.实例:实现自动化浏览王者荣耀多页面信息(滚屏事件)
实现内容如下:
from selenium import webdriver
import time
driver = webdriver.Chrome(executable_path="chromedriver") #设置浏览器驱动
driver.maximize_window() #窗口最大化
driver.get(url='http://news.4399.com/gonglue/wzlm/yingxiong/') #网页链接
#声明浏览器高度
height = 0
for i in range(1,6):
js = 'var q=document.documentElement.scrollTop=%d' % height
height += 800
time.sleep(1)
driver.execute_script(js)
driver.find_element_by_xpath('//*[@id="hero_more"]/a').click()
time.sleep(1)
注意:
(1) driver.maximize_window() #窗口最大化
(2)driver.get(url='http://news.4399.com/gonglue/wzlm/yingxiong/') #网页链接(3)#声明浏览器高度
height = 0
for i in range(1,6):
js = 'var q=document.documentElement.scrollTop=%d' % height
height += 800
time.sleep(1)
driver.execute_script(js)
driver.find_element_by_xpath('//*[@id="hero_more"]/a').click()#此步模拟了“点击查看更多”这一个点击事件
time.sleep(1)