当前位置 : 主页 > 编程语言 > python >

利用python爬虫(part17)--初识selenium

来源:互联网 收集:自由互联 发布时间:2022-06-15
学习笔记 文章目录 ​​selenium​​ ​​phantomjs与chromedriver​​ ​​浏览器对象browser​​ selenium selenium为Web自动化测试工具,可运行在浏览器,根据指令操作浏览器,如点击、下拉等。

学习笔记



文章目录

  • ​​selenium​​
  • ​​phantomjs与chromedriver​​
  • ​​浏览器对象browser​​

selenium

selenium为Web自动化测试工具,可运行在浏览器,根据指令操作浏览器,如点击、下拉等。如果我们将selenim和Chrome/phantomjs浏览器结合,则功能会非常强大,我们几乎可以爬取想爬取的任何东西。

  • 安装
pip install selenium

注意 ,selenium安装比较容易报超时错误:​​ReadTimeoutError​​,听说是由于selenium服务器在美国,所以连接很差。网上有挺多办法的,但是我比较懒,就执行了7次这个代码,才把它给下载下来。

报错信息:

利用python爬虫(part17)--初识selenium_selenium

phantomjs与chromedriver

phantomjs为无界面浏览器(又称无头浏览器),可以在内存中进行页面加载,提高加载效率。chromedriver可以配合selenium库使用,只有安装chromedriver,才能驱动Chrome浏览器完成相应的操作。

  • 下载(phantomjs、chromedriver)

在网上查找对应版本的phantomjs和chromedriver,并将其exe程序放在python安装目录的Scripts文件夹下(添加到系统环境变量)。

chromedriver下载地址:https://npm.taobao.org/mirrors/chromedriver/

phantomjs下载地址:https://npm.taobao.org/dist/phantomjs/

注意!我们在下载chromedriver时,不能随便下载,应该根据Chrome浏览器的版本进行下载。比如说,我的版本Chrome浏览器为81.0.4044,那我就需要下载与这个版本接近的chromedriver,比如这里我下载的是chromedriver_win32.zip 。

利用python爬虫(part17)--初识selenium_爬虫_02

  • 举个例子1

我们利用selenium和chromedriver打开chrome浏览器:

from selenium import webdriver
browser = webdriver.Chrome()

被打开的浏览器界面:

利用python爬虫(part17)--初识selenium_chrome_03

  • 举个例子2

我们利用selenium和chromedriver打开百度:

# -*- coding: utf-8 -*-

from selenium import webdriver

#创建浏览器对象(打开浏览器)
browser = webdriver.Chrome()
#当我们没有将chromedrive添加到环境变量中
#那么我们需要指定参数excutable_path='chromedrive的路径'

#在地址栏中输入百度URL
browser.get("http://www.baidu.com/")

被打开的浏览器界面:

利用python爬虫(part17)--初识selenium_百度_04

  • 举个例子3

利用selenium和chromedriver打开百度,在内存中截图,并关闭浏览器:

# -*- coding: utf-8 -*-
from selenium import webdriver

#创建浏览器对象(打开浏览器)
browser = webdriver.Chrome()
#当我们没有将chromedrive添加到环境变量中
#那么我们需要指定参数excutable_path='chromedrive的路径'

#在地址栏中输入百度URL
browser.get("http://www.baidu.com/")

#获取屏幕截图
browser.save_screenshot("./test/baidu_screen.png")

#关闭浏览器
browser.quit()

截图:

利用python爬虫(part17)--初识selenium_爬虫_05

  • 举个例子4

利用selenium和chromedriver打开百度,搜索关键字【垂耳兔】。

为了在百度中搜索词条,我们需要知道百度搜索的搜索框和百度一下的按钮被包含在哪些标记中,故我们审查搜索框元素:

利用python爬虫(part17)--初识selenium_python_06

我们发现,这个搜索框在input标记中,且这个input标记的id属性值为kw.

利用python爬虫(part17)--初识selenium_爬虫_07

我们也可以看到,百度一下的按钮也被包含在input标记中,且这个input标记的id属性值为su.

python代码:

# -*- coding: utf-8 -*-

from selenium import webdriver

#创建浏览器对象(打开浏览器)
browser = webdriver.Chrome()
#当我们没有将chromedrive添加到环境变量中
#那么我们需要指定参数excutable_path='chromedrive的路径'

#在地址栏中输入百度URL
browser.get("http://www.baidu.com/")

#找到搜索框
browser.find_element_by_id('kw').send_keys("垂耳兔")

#点击百度一下
browser.find_element_by_id('su').click()


#获取屏幕截图
browser.save_screenshot("./test/baidu_screen.png")


#关闭浏览器
browser.quit()

截图:
利用python爬虫(part17)--初识selenium_python_08

  • 举个例子5

我们用xpath来查找关键字【垂耳兔】

# -*- coding: utf-8 -*-

from selenium import webdriver

browser = webdriver.Chrome()
browser.get("http://www.baidu.com/")
browser.find_element_by_xpath('//*[@id="kw"]').send_keys("垂耳兔")
browser.find_element_by_xpath('//*[@id="su"]').click()

browser.quit()

浏览器对象browser

  • 相关方法
browser = webdriver.Chrome(executable_path='path')
browser.get(url)
browser.page_source # 查看响应内容,即查看HTML源码
browser.page_source.find('字符串')
# 从响应内容中搜索指定字符串,没有找到返回:-1,找到则返回:一个非-1的数
browser.quit() # 关闭浏览器

#---------单元素查找-----------
# 返回1个节点对象
browser.find_element_by_id('')
browser.find_element_by_name('')
browser.find_element_by_class_name('')
browser.find_element_by_xpath('')

#---------多元素查找-----------
#返回节点对象列表
browser.find_elements_by_id(['', '',''])
browser.find_elements_by_name(['', '',''])
browser.find_elements_by_class_name(['', '',''])
browser.find_elements_by_xpath(['', '',''])

#---------节点对象操作-----------
ele.send_keys('') #向文本框发送内容
ele.click() #点击按钮
ele.text #获取文本内容
ele.get_attribute('src') # 获取属性值
  • 来个例子

爬取#影#堂最新的5条电影信息。

# -*- coding: utf-8 -*-

from selenium import webdriver
browser = webdriver.Chrome()

#在地址栏中输入百度URL
browser.get("https://www.dytt8.net/html/gndy/dyzz/index.html")

xpath = '//*[@id="header"]//div[@class="co_content8"]/ul/table'
film_names = browser.find_elements_by_xpath(xpath)

for item in film_names[0:5]:
print(item.text, '\n')

browser.quit()

输出:

2019年剧情喜剧《军人的妻子》BD中英双字幕
日期:2020-04-22 10:39:03 点击:0
◎译 名 军人的妻子/军嫂/女声我最美(台) ◎片 名 Military Wives/The Singing Club ◎年 代 2019 ◎产 地 英国 ◎类 别 剧情/喜剧 ◎语 言 英语 ◎字 幕 中英双字幕 ◎上映日期 2019-09-06(多伦多电影节) / 2020-03-06(英国) ◎IMDb评分 6.4/10 from 1133 users ◎豆

2019年获奖奇幻《匹诺曹/木偶奇遇记》BD中英双字幕
日期:2020-04-22 16:58:22 点击:0
◎译 名 匹诺曹/木偶奇遇记 ◎片 名 Pinocchio ◎年 代 2019 ◎产 地 意大利,英国,法国 ◎类 别 奇幻 ◎语 言 意大利语 ◎上映日期 2019-12-19(意大利) ◎IMDb评分 6.5/10 from 1726 users ◎豆瓣评分 6.8/10 from 2,205 users ◎字 幕 中英双字幕 ◎文件格式 x264 + a

2019年动作《叶问4:完结篇》BD国粤双语中字
日期:2020-04-20 10:12:22 点击:0
◎译 名 叶问4:完结篇/Ip M4n/Ip Man 4/Yip Man 4/Yip Man 4:The Finale/叶问4 ◎片 名 葉問4 ◎年 代 2019 ◎产 地 中国香港 ◎类 别 剧情/动作 ◎语 言 国语/粤语 ◎字 幕 中文 ◎上映日期 2019-12-20(中国大陆) ◎IMDb评分 7.5/10 from 4176 users ◎豆瓣评分 7.2

2020年动作悬疑《节奏组/复仇谜奏》BD中英双字幕
日期:2020-04-20 00:52:37 点击:0
◎译 名 节奏组/复仇谜奏 ◎片 名 The Rhythm Section ◎年 代 2020 ◎产 地 英国 ◎类 别 动作 / 悬疑 / 惊悚 ◎语 言 英语 ◎字 幕 中英双字幕 ◎上映日期 2020-01-31(英国) ◎IMDb评分 5.2/10 from 3922 users ◎豆瓣评分 5.0/10 from 498 users ◎文件格式 x264 +

2018年剧情犯罪《江湖儿女》BD国语中字
日期:2020-04-19 20:49:35 点击:0
◎译 名 Ash is Purest White/Money Love ◎片 名 江湖儿女/灰烬是最洁白的/金钱与爱情 ◎年 代 2018 ◎产 地 中国/法国/日本 ◎类 别 剧情/爱情/犯罪 ◎字 幕 中文 ◎语 言 普通话/山西方言/湖北方言/重庆方言 ◎上映日期 2018-05-11(戛纳电影节)/2018-09-21(中国) ◎

网友评论