python爬虫—selenium的使用

1.Selenium

Selenium是一个web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩的游戏用的按键精灵,可以按指定的名自动操作,不同是selenium可以直接运行在浏览器上,它支持所有主流的六千(包括Phantoms这些无界面的浏览器)。

selenium可以根据我们的质量,让浏览器自动加载页面,获取序员的数据,甚至页面截屏,或者判断浏览器上某些动作是否发生。

Selenium自己不带浏览器,不支持浏览器功能,他需要与第三浏览器结合在一起使用。但是我们有时候需要让它内嵌在代码中运行,所以我们可以用一个叫Phantoms的工具代替真是的浏览器。

Pyp网站下Selenium库https://pypi.python.org/simple/selenium

pip安装命令 pip install selenium

Selenium官方文档https://readthedocs.org/projects/selenium-python/

2.PhantomJS

PhantomJS是一个基于webkit的“无界面“(headless)浏览器,他会把浏览器加载到内存并执行页面上的Javascript,因为不会展示图形界面,所以运行启动比完整的浏览器更高效。

如果我们吧Selenium 和PhantomJS结果在一起,就可以运行一个非常强大的网络爬虫了,这个爬虫可以处理Javascript、Coookie、headers,以及任何我们真实用户需要做的事情。

2.1 安装Firefox geckodriver

安装firefox最新版本,添加Firefox可执行程序到系统环境变量。记得关闭firefox自动更新。

firefox下载地址:https://github.com/mozilla/geckodriver/releases

2.1.2 安装ChromeDriver

http://chromedriver.storage.google.com/index.html

注意版本号要对应

下载下来的文件解压到Python根目录下的Scrips

chrome59版本以后可以变成无头浏览器,加以下参数。

options = webdriver.ChromeOptions()
options = add_argument('--headless')
chrome = webdriver.Chrome(chrome_options = options)
chrome.get("http://www.baidu.com")

3.使用方式

Selenium库有个叫webDriver的API。WebDriver有点儿像可以加载网站的浏览器,但是它也可以向 BeauSoup或者其他Selector对象一样用来查找页面元素,与页面上的元素进行交互(发送文本、点击等),以及执行其他动作来运行网络爬虫。

3.1 截图浏览器

from selenium import webdriver

# 构造浏览器
chrome = webdriver.Chrome()

# 发送请求,访问url
url = "http://www.baidu.com"
#打开网页
chrome.get(url)
# 截图
chrome.save_screenshot('baidu.png')
# 获取源代码
html = chrome.page_source
print(html)
#关闭浏览器
chrome.quit()

3.2 模拟百度搜索

from selenium import  webdriver
from time import  sleep
#构造浏览器
driver = webdriver.Chrome()

url = 'https://cn.bing.com/'
#发送请求
driver.get(url)
#输入要搜索的内容
driver.find_element_by_id('sb_form_q').send_keys('python')

# 点击搜索按钮
driver.find_element_by_id('sb_form_go').click()
#打印内容不全解决  等待3s
sleep(3)
#获取源代码
html = driver.page_source
print(html )
driver.quit()

3.3 参数的使用‘

(1)无头模式

(2) 使用代理模式

from selenium import  webdriver
from time import sleep

def headess():
    #用户无头浏览器模式
    options = webdriver.ChromeOptions()
    #无图模式
    options.add_argument('--headless')
    #将参数设置到浏览器
    chrome = webdriver.Chrome(chrome_options  = options)
    chrome.get('http://wwww.baidu.com')
    print(chrome.page_source)
    sleep(3)
    chrome.quit()
#使用代理
def proxy():
    options = webdriver.ChromeOptions()
    # options.add_argument('--proxy-server=type//http://ip:port')
    options.add_argument('--proxy-server=http://121.233.251.225:9999')
    chrome = webdriver.Chrome(chrome_options=options)
    chrome.get('http://httpbin.org/get')
    print(chrome.page_source)
    chrome.quit()
if __name__ == '__main__':
    proxy()

 

文章已创建 80

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部