Selenium
Selenium(使自己伪装的更好)
- 什么是Selenium
1)Selenium是一个用于web应用程序测试的工具
2)Selenium测试运行在浏览器中,就像真正的用户在操作一样。
3)支持各种通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaDriver,Chrome Driver)驱动真实浏览器完成测试
4)selenium也是支持无界面浏览器操作的 - 为什么使用Selenium
模拟浏览器功能,自动执行网页中的js代码,实现动态加载 - 安装过程这里就不描述了
- selenium的使用步骤
1)导入:from selenium import webdriver
2)创建谷歌浏览器操作对象:
path=谷歌浏览器驱动文件路径
browser=wedbriver.Chrome(path)
3)访问网址
url=要访问的地址
browser.get(url)
Selenium具体体现
爬取京东界面,查看信息后发现没有关于秒杀的信息
import urllib.request
url='https://www.jd.com/'
response=urllib.request.urlopen(url)
content=response.read().decode('utf-8')
print(content)
加入Selenium后在进行爬取
#导入selenium
from selenium import webdriver #(调用浏览器进行访问,而不是模拟,真实度更高)
#创建浏览器操作对象
path='chromedriver.exe'
browser=webdriver.Chrome()
#访问网站
url='http://www.jd.com'
browser.get(url)
#获取网页源码
content=browser.page_source
with open('jingdong.txt','w',encoding='utf-')as f:
f.write(content)
Selenium使用
#使用时开头代码
from selenium import webdriver
browser=webdriver.Chrome()
url='https://www.baidu.com'
browser.get(url)
#元素定位
#根据id找到对象
button=browser.find_element_by_id('su')
print(button)
#根据标签属性的属性值来获取对象
button=browser.find_element_by_name('wd')
print(button)
#根据xpath语句来获取对象
button=browser.find_element_by_xpath('//input[@id="su"]')
print(button)
#根据标签的名字来获取对象
button=browser.find_element_by_tag_name('input')
print(button)
#使用bs4的语法来获取对象
button=browser.find_element_by_css_selector('#su')
print(button)
#获取连接文本对象
button=browser.find_element_by_link_text('视频')
print(button)
#selenium元素的信息以及交互
from selenium import webdriver
browser=webdriver.Chrome()
url='https://baidu.com'
browser.get(url)
#通过id找到对象
input=browser.find_element_by_id('su')
#获取标签的属性
print(input.get_attribute('class'))
#获取标签的名字
print(input.tag_name)
#获取元素文本(指的是尖括号之间的文本)先找到连接
a=browser.find_element_by_link_text('新闻')
print(a.text)
通过上面的功能实现对浏览器的自动操作
#实现自动滑动网页(交互)
from selenium import webdriver
#创建浏览器对象
browser=webdriver.Chrome()
#url
url='https://www.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_button='document.documentElement.scrollTop=1000000'
browser.execute_script(js_button)#执行js语s句
time.sleep(2)
#点击下一页
next=browser.find_element_by_xpath("//a[@class='n']")
time.sleep(2)
#点击下一页
next.click()
time.sleep(2)
#回到上一页
browser.back()
time.sleep(2)
#回到上一个页面
browser.forward()
time.sleep(2)
#退出
browser.quit()