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

让你的爬虫动起来!

来源:互联网 收集:自由互联 发布时间:2022-06-15
你的网络爬虫会动吗?如何将爬虫进行可视化,今天我们来使用自动化测试框架Selenium和浏览器驱动ChromeDriver让你的爬虫动起来! Selenium Selenium是一个Web应用程序测试的工具,可以使基

你的网络爬虫会动吗?如何将爬虫进行可视化,今天我们来使用自动化测试框架Selenium和浏览器驱动ChromeDriver让你的爬虫动起来!

Selenium

Selenium是一个Web应用程序测试的工具,可以使基于它编写的程序运行在浏览器中,就像真正的用户在操作一样。

其本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果。

支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。支持自动录制动作,和自动生成 .NET、Perl、Python、Ruby 和 Java 等不同语言的测试脚本。
让你的爬虫动起来!_chrome

Selenium不是一个单一的工具,而是一套工具,帮助测试者更有效地基于Web的应用程序的自动化。

2

ChromeDriver


Selenium是一个开源工具,用于在许多浏览器上自动测试webapps。它提供了导航到网页,用户输入,JavaScript执行等功能。

让你的爬虫动起来!_chrome_02

ChromeDriver是一个独立的服务,它为Chromium实现Selenium的JsonWireProtocol协议。
目前正在实现并转向W3C标准。ChromeDriver适用于Android版Chrome和桌面版Chrome(Mac,Linux,Windows和ChromeOS)。
ChromeDriver是google 为网站开发人员提供的自动化测试接口,它是 selenium和chrome浏览器进行通信的桥梁。

官网地址:https://sites.google.com/a/chromium.org/chromedriver/

3

爬虫


我们访问百度输入关键字“东京奥运会”,爬取目前奥运奖牌榜前五名的数据。


首先加载浏览器驱动,这里我使用的是下载好的Chrome驱动

from selenium import webdriver
# 加载本地chrome驱动
driver = webdriver.Chrome(executable_path="E:\\workspace\\Project\\script\\chromedriver.exe")


​访问百度,输入关键字进行搜索

driver.get('https://www.baidu.com/')
# 获取输入框
kw = driver.find_element_by_id("kw")
kw.send_keys("东京奥运会")
# 点击搜索
su = driver.find_element_by_id("su")
su.click()
# 隐式等待1秒,适应ajax异步响应
driver.implicitly_wait(1)


根据html的结构特点,通过Xpath和元素选择器的定位,爬取数据

让你的爬虫动起来!_数据_03

# 找到要爬取内容
ul = driver.find_element_by_xpath(
'//*[@id="1"]/div/div[3]/div/div[2]/div[3]/div/div[2]/div/div/div[2]/div').find_element_by_tag_name("ul")
lis = ul.find_elements_by_tag_name('li')

result = []
for i in range(0, len(lis)):
info = {}
if i == 0:
continue
info['country'] = lis[i].find_element_by_class_name('tab-item-place_2obgx') \
.find_element_by_tag_name('span').text
info['gold'] = lis[i].find_elements_by_class_name('tab-item-medal_rKzT4')[0].text
info['silver'] = lis[i].find_elements_by_class_name('tab-item-medal_rKzT4')[1].text
info['bronze'] = lis[i].find_elements_by_class_name('tab-item-medal_rKzT4')[2].text
info['total'] = lis[i].find_element_by_class_name('tab-item-sum_36AhL').text
info['url'] = lis[i].find_element_by_class_name('tab-item-link_1hozG').get_attribute('href')
result.append(info)

打印输出结果,并关闭浏览器

for item in result:
driver.get(item['url'])
driver.back()
print(item)

# 关闭驱动
driver.close()
# 关闭浏览器
driver.quit()

运行效果:


让你的爬虫动起来!_chrome_04

让你的爬虫动起来!_数据_05

end

作者:Lee,计算机硕士在读 

关注我,一起学习,共同成长


上一篇:Python 使用 cx_Oracle 教程
下一篇:没有了
网友评论