Python爬虫入门:使用selenium库,webdriver库模拟浏览器爬虫,模拟用户爬虫,爬取网站内文章数据,循环爬取网站全部数据。

这篇具有很好参考价值的文章主要介绍了Python爬虫入门:使用selenium库,webdriver库模拟浏览器爬虫,模拟用户爬虫,爬取网站内文章数据,循环爬取网站全部数据。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

*严正声明:本文仅限于技术讨论与分享,严禁用于非法途径。

目录

准备工具:

思路:

具体操作:

调用需要的库:

启动浏览器驱动:

代码主体:

 完整代码(解析注释):


准备工具:

Python环境;

安装selenium库;

Python编辑器;

待爬取的网站;

安装好的浏览器;

与浏览器版本相对应的浏览器驱动

思路:

使用Python打开浏览器~~>>进入待爬取的网站~~>>模拟用户点击文章~~>>跳转至文章界面~~>>将文章界面数据保存下来~~>>关闭文章界面~~>>回到原网页~~>>模拟用户点击下一个文章~~>>将第一页全部爬取完毕~~>>模拟用户点击下一页~~>>将所有爬取完毕关闭浏览器.

具体操作:

调用需要的库:

from selenium import webdriver
import time
from selenium.webdriver.common.by import By
# 调用selenium库通过驱动浏览器,完全模拟浏览器的操作,像真正的用户在操作一样。
# webdriver调用驱动
# By是selenium中内置的一个class,在这个class中定位元素

启动浏览器驱动:

下载浏览器驱动:

chrome驱动下载chromedriver.storage.googleapis.com/index.html

浏览器驱动需要放在Python环境变量中

查看Python存放路径

在命令行中输入Python,进入Python中

>>> import sys
>>> sys.path

或者命令行输入where python

Python爬虫入门:使用selenium库,webdriver库模拟浏览器爬虫,模拟用户爬虫,爬取网站内文章数据,循环爬取网站全部数据。

driver = webdriver.Chrome()  # 选择自己需要的浏览器驱动进行调用,这里使用的是Chrome驱动
url = ''  # 定义自己需要爬取的网站url
# headers = {"User-Agent":" Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"}
driver.get(url)  # 使用Python打开的浏览器访问网站

代码主体:

range(1,5)设置循环次数为四次

使用selenium隐式等待:

当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找

find_elements属于selenium中复数的定位元素内容。find_elements主要定位定位页面上多个相同的元素坐标。

By.CSS_SELECTOR  可以通过多个属性(比如有多个class的)进行定位

'.listContent'  包括所有需要爬取的文章

for page in range(1,5):
    time.sleep(1)
    driver.implicitly_wait(8)
    lis = driver.find_elements(By.CSS_SELECTOR,'.listContent')

try做异常处理

try:
    ****
except Exception as e:
    print(e)

find_element定位方法和find_elements其实一样的,只不过多了一个s相当于定位多组

c = li.find_element(By.CLASS_NAME,'article_title')
driver.execute_script('arguments[0].click();',c)
# 模拟用户进行点击,具体查找
# 如果直接使用
# li.find_element(By.CLASS_NAME,'article_title').click()
# 可能会出现查找不到点击对象

由于每次点击都会打开新的标签页,所以需要定义一个初始页

original_window = driver.current_window_handle

切换到新打开的标签页

driver.switch_to.window(driver.window_handles[-1])

保存完毕后切换到初始页

driver.switch_to.window(original_window)

打开文件文件路径;

打开文件,并设置读写权限(w覆盖并写入,b二进制数据);

write将数据写入文件,encode将数据进行编码文章来源地址https://www.toymoban.com/news/detail-423402.html

get_html = "D:\Python文件\html\{}.html".format(b)
f = open(get_html,'w+b')
f.write(driver.page_source.encode())
    for li in lis:
        try:
            b = li.find_element(By.CLASS_NAME,'article_title span').text
            c = li.find_element(By.CLASS_NAME,'article_title')
            driver.execute_script('arguments[0].click();',c)
            original_window = driver.current_window_handle
            driver.switch_to.window(driver.window_handles[-1])
            time.sleep(1)
            
            get_html = "D:\Python文件\html\{}.html".format(b)
            f = open(get_html,'w+b')
            f.write(driver.page_source.encode())
            f.close()
            driver.close()
            driver.switch_to.window(original_window)
            time.sleep(1)
            
        except Exception as e:
            print(e)

 完整代码(解析注释):

# 调用selenium库通过驱动浏览器,完全模拟浏览器的操作,像真正的用户在操作一样。
# webdriver调用驱动
from selenium import webdriver
import time
# By是selenium中内置的一个class,在这个class中有各种方法来定位元素
from selenium.webdriver.common.by import By

# 将Chrome驱动调用,也可以换成其他浏览器驱动
driver = webdriver.Chrome()

# 将要爬取的网站url
url = ''

# 有些需要headers,有些则不用
# headers = {"User-Agent":" Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"}

# 使用Chrome驱动访问URL
driver.get(url)

# 这里进入循环,因为网站只有五页,所以循环五次;range()中填写想要循环的次数,从一次到n次
for page in range(1,5):
    
    # 刚进入浏览器页面需要睡一秒,网络不稳定可以多等几秒
    time.sleep(1)
    # 进入浏览器缓冲
    driver.implicitly_wait(8)
    # 定义一个函数,查找全部需要爬取的内容
    lis = driver.find_elements(By.CSS_SELECTOR,'.listContent')
    
    # 进入循环,循环爬取lis中的数据
    for li in lis:
        # 有时候会报错,这里做了一个异常处理
        try:
            # 要将文件保存,定义name为爬取文章的名字,.text获取文章链接中的文字
            name = li.find_element(By.CLASS_NAME,'article_title span').text
            # 模拟用户点击进入文章
            c = li.find_element(By.CLASS_NAME,'article_title')
            # 有时候直接.click()会出现找不到数据的情况,这里具体指定一下
            driver.execute_script('arguments[0].click();',c)
            # 因为每次点击都会打开新的标签页,这里定义首页为原标签页
            original_window = driver.current_window_handle
            # 爬取文章数据需要切换进入新标签页
            driver.switch_to.window(driver.window_handles[-1])
            # 等待一秒
            time.sleep(1)
            
            # 定义.html文件路径,文件名为函数name
            get_html = "D:\Python文件\html\{}.html".format(name)
            # 打开文件
            f = open(get_html,'w+b')
            # 将切换后的标签页的数据写入文件
            f.write(driver.page_source.encode())
            # 关闭文件
            f.close()
            # 关闭切换的新标签页
            driver.close()
            # 切换至原标签页
            driver.switch_to.window(original_window)
            time.sleep(1)
        # 异常处理
        except Exception as e:
            print(e)
    # 模拟用户点击下一页,与上一个点击事件原理一样
    r = driver.find_element(By.CLASS_NAME,'btn-next')
    driver.execute_script('arguments[0].click();',r)
# 关闭浏览器
driver.quit()
    

到了这里,关于Python爬虫入门:使用selenium库,webdriver库模拟浏览器爬虫,模拟用户爬虫,爬取网站内文章数据,循环爬取网站全部数据。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python 爬虫热身篇 使用 requests 库通过 HTTP 读取网络数据,使用 pandas 读取网页上的表格,使用 Selenium 模拟浏览器操作

    在过去,收集数据是一项繁琐的工作,有时非常昂贵。机器学习项目不能没有数据。幸运的是,我们现在在网络上有很多数据可供我们使用。我们可以从 Web 复制数据来创建数据集。我们可以手动下载文件并将其保存到磁盘。但是,我们可以通过自动化数据收集来更有效地做

    2023年04月08日
    浏览(74)
  • 【python爬虫】设计自己的爬虫 4. 封装模拟浏览器 Selenium

    有些自动化工具可以获取浏览器当前呈现的页面的源代码,可以通过这种方式来进行爬取 一般常用的的有Selenium, playwright, pyppeteer,考虑到他们的使用有许多相同之处,因此考虑把他们封装到一套api中 先看基类 Selenium是一个自动化测试工具,利用它可以驱动浏览器完成特定

    2024年02月03日
    浏览(63)
  • [爬虫]2.2.1 使用Selenium库模拟浏览器操作

    Selenium是一个非常强大的工具,用于自动化Web浏览器的操作。它可以模拟真实用户的行为,如点击按钮,填写表单,滚动页面等。由于Selenium可以直接与浏览器交互,所以它可以处理那些需要JavaScript运行的动态网页。 首先,我们需要安装Selenium库。你可以使用pip命令来安装:

    2024年02月16日
    浏览(59)
  • Python小姿势 - # Python网络爬虫之如何通过selenium模拟浏览器登录微博

    Python网络爬虫之如何通过selenium模拟浏览器登录微博 微博登录接口很混乱,需要我们通过selenium来模拟浏览器登录。 首先我们需要安装selenium,通过pip安装: ``` pip install selenium ``` 然后我们需要下载一个浏览器驱动,推荐使用Chrome,下载地址:http://chromedriver.storage.googleapis.c

    2024年02月03日
    浏览(62)
  • selenium+python自动化测试之使用webdriver操作浏览器的方法

    WebDriver简介 selenium从2.0开始集成了webdriver的API,提供了更简单,更简洁的编程接口。selenium webdriver的目标是提供一个设计良好的面向对象的API,提供了更好的支持进行web-app测试。从这篇博客开始,将学习使用如何使用python调用webdriver框架对浏览器进行一系列的操作 打开浏览

    2024年01月25日
    浏览(66)
  • Python之selenium,使用webdriver模拟登录网站(含验证码)

    前段时间做了一个小项目,其中有一段需要自动获取网站后台的数据,但是这个网站没有任何提供给开发者的API,所以只能靠自己去探索。 起初想着用发送请求的方式去模拟登陆,获取cookies,从而再获取网站后台数据,但是因为自己太菜了一些原因,放弃了这个方法。 后来

    2024年02月02日
    浏览(62)
  • 浏览器自动化脚本 Selenium WebDriver 快速入门

    2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-CSDN博客 文章浏览阅读2.7k次,点赞85次,收藏12次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、

    2024年03月09日
    浏览(74)
  • 爬虫进阶之selenium模拟浏览器

    Selenium是一个用于自动化浏览器操作的工具,通常用于Web应用测试。然而,它也可以用作爬虫,通过模拟用户在浏览器中的操作来提取网页数据。以下是有关Selenium爬虫的一些基本介绍: 浏览器自动化: Selenium允许你通过编程方式控制浏览器的行为,包括打开网页、点击按钮

    2024年01月20日
    浏览(69)
  • python使用selenium控制浏览器进行爬虫

    这里以谷歌浏览器为例,需要安装一下chromedriver,其他浏览器也有相对应的driver,chromedriver下载地址:https://googlechromelabs.github.io/chrome-for-testing/ 然后是打开python环境安装一下依赖 pip install selenium ,验证一下控制浏览器是否成功 点击运行脚本可以看到以下页面就成功了。 爬虫

    2024年02月04日
    浏览(67)
  • Python使用Selenium模拟浏览器自动操作功能

    概述 在进行网站爬取数据的时候,会发现很多网站都进行了反爬虫的处理,如JS加密,Ajax加密,反Debug等方法,通过请求获取数据和页面展示的内容完全不同,这时候就用到Selenium技术,来模拟浏览器的操作,然后获取数据。本文以一个简单的小例子,简述Python搭配Tkinter和

    2024年01月17日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包