Python爬虫之selenium+chrome实现动态抓取

Python爬虫之selenium+chrome实现动态页面爬取

本文主要介绍python+selenium+chromedriver的组合运用,实现浏览器爬虫。

1.Selenium的介绍

Selenium是一个用于web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Edge,Mozilla Firefox,Safari,Google Chrome,Opera等。

Selenium诞生于2004年,经过发展成为了一个庞大的工具集。

  1. Selenium 2 (又叫 Selenium Webdriver)
    WebDriver 是一个进行 web 应用测试自动化的工具,直接通过浏览器自动化的本地接口来调用浏览器,主要用于验证它们的行为是否符合期望。WebDriver提供了一套简单方便的API,使用户能够快捷地运用这些API测试Web应用。
  2. Selenium 1 (又叫 Selenium RC 或 Remote Control)
    Selenium RC在很长一段时间内都是Selenium项目中的主角,直到Selenium WebDriver的出现。Selenium RC支持几乎所有的浏览器,并且支持这些浏览器的工作原理都是一样的,它将 JavaScript 在浏览器加载的时候注入浏览器,然后使用这些 JavaScript 驱动AUT(测试中的应用)运行。
  3. Selenium IDE
    Selenium IDE(集成开发环境)是Selenium Suite下的开源Web自动化测试工具。 与Selenium WebDriver和RC不同,它不需要任何编程逻辑来编写其测试脚本,而只需记录与浏览器的交互以创建测试用例。
  4. Selenium-Grid
    Selenium-Grid 允许你在多台机器的多个浏览器上并行的进行测试,也就是说,你可以同时运 行多个测试。本质上来说就是,Selenium-Grid 支持分布式的测试执行。它可以让你的测试在 一个分布式的执行环境中运行。

Selenium Python提供了一个简单的API,可以使用Selenium WebDriver编写功能/验收测试。通过Selenium Python API可以访问Selenium WebDriver的所有功能。

2.工具安装

(1)selenium安装

pip install selenium

(2)chromedriver安装

下载地址:chromedriver存储库
选择与本机Chrome浏览器相对应的版本
选择与本机Chrome浏览器相对应的版本,下载解压,将chromedriver复制到Chrome浏览器安装路径下。
在这里插入图片描述

3.编写代码,调用chromedriver

# 导入工具包
from selenium import  webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
import time

#创建浏览器对象
driver = webdriver.Chrome(r'D:\应用程序\chrome\chromedriver.exe')
driver.get("https://www.toutiao.com") #访问头条

结果如下:
在这里插入图片描述

4.示例:爬取头条热点新闻标题

# 爬取今日头条热点新闻标题
from selenium import webdriver
import time

# 启动浏览器
url='https://www.toutiao.com'
driver=webdriver.webdriver.Chrome(r'D:\应用程序\chrome\chromedriver.exe')
driver.get(url)
driver.implicitly_wait(10)
driver.maximize_window() # 最大化窗口
driver.implicitly_wait(10)
driver.find_element_by_link_text('热点').click()  # 点击热点
driver.implicitly_wait(10)

title_list=[]
def toutiao():  # 获取新闻标题
   titles= driver.find_elements_by_xpath('//div[@class="title-box"]/a')
   for title in titles:
       title_list.append(title.text)

def scoll():  # 滚动页面
   driver.execute_script("window.scrollTo(0,1000);")
   time.sleep(1)
   while len(title_list) < 20:
       for i in range(10):
           driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
           time.sleep(3)
       toutiao()  # 爬取新闻
       driver.refresh()
   else:
       driver.close()
       
#运行scoll函数
scoll()
print(title_list) #输出结果

结果如下:
在这里插入图片描述

5.总结

通过上面的演示,我们基本对python + selenium + chromedriver的使用有了一个初步的认识。当然在安装和调试selenium、chromedriver的过程中可能会存在各种各样的Bug,对于这些问题,可以到网上去搜索寻找答案。同一个问题可能会有不同的原因,但大部分原因前人也都遇到过,借鉴别人的经验尤为重要。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python爬虫是一种用于自动化获取网页数据的程序。它可以通过发送HTTP请求,解析HTML页面,并提取所需的信息。对于静态网页,爬虫可以直接通过请求获取到页面的HTML代码,然后使用解析库(如BeautifulSoup)来提取所需的数据。但是对于动态网页,情况稍有不同。 动态网页是指在页面加载过程中,通过JavaScript等技术动态生成内容的网页。这些内容可能是通过Ajax请求获取的,或者是在页面加载完成后通过JavaScript代码生成的。因此,对于动态网页的抓取,我们需要模拟浏览器行为来执行JavaScript代码,并获取最终生成的HTML内容。 在Python中,有一些库可以帮助我们实现动态网页的抓取,其中比较常用的是Selenium和Pyppeteer。这两个库都可以模拟浏览器行为,并且支持执行JavaScript代码。你可以根据自己的需求选择其中一个进行使用。 使用Selenium进行动态网页抓取的基本步骤如下: 1. 安装Selenium库:使用pip命令安装selenium库。 2. 下载浏览器驱动:根据你使用的浏览器(如Chrome、Firefox等)下载对应的浏览器驱动,并将其添加到系统路径中。 3. 创建WebDriver对象:使用Selenium的WebDriver类创建一个浏览器对象,如ChromeDriver。 4. 打开网页:使用WebDriver对象的get方法打开目标网页。 5. 执行JavaScript代码:如果页面中有动态生成的内容,可以使用WebDriver对象的execute_script方法执行JavaScript代码。 6. 提取数据:使用Selenium提供的方法或者其他解析库(如BeautifulSoup)来提取所需的数据。 使用Pyppeteer进行动态网页抓取的基本步骤如下: 1. 安装Pyppeteer库:使用pip命令安装pyppeteer库。 2. 安装Chromium浏览器:Pyppeteer依赖于Chromium浏览器,需要先安装Chromium浏览器。 3. 创建Browser对象:使用Pyppeteer的launch方法创建一个浏览器对象。 4. 创建Page对象:使用Browser对象的newPage方法创建一个页面对象。 5. 打开网页:使用Page对象的goto方法打开目标网页。 6. 执行JavaScript代码:如果页面中有动态生成的内容,可以使用Page对象的evaluate方法执行JavaScript代码。 7. 提取数据:使用Pyppeteer提供的方法或其他解析库(如BeautifulSoup)来提取所需的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值