热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python3网络爬虫开发实战(一)

1.开发环境配置 1.1Python3的安装 在写博客之前,楼主使用的是目前为止最新版本的Python 3.9.1。但由于在安装tesserocr时,没有对应版本的whee
1.开发环境配置

1.1Python3的安装

在写博客之前,楼主使用的是目前为止最新版本的Python 3.9.1。但由于在安装tesserocr时,没有对应版本的wheel文件。因此,将Python的版本降到了3.7.9。具体的影响因为刚开始学习暂时未知,先用3.7.9的版本。

  • 官方网站:http://python.org
  • 下载地址:https://www.python.org/downloads

1.2请求库的安装

爬虫可以简单的分为几步:抓取页面、分析页面、存储数据。

  • 在抓取页面的过程中,需要模拟浏览器向服务器发出请求,需要用到一些Python库来实现HTTP请求操作。

    • 用到的第三方库有requestsSeleniumaiohttp

      1. requests:

        中文文档:http://docs.python-requests.org/zh_CN/latest

        pip安装:pip install requests

        验证安装:import requests,如没有错误提示,则安装成功。

      2. Selenium:

        Selenium是一个自动化测试工具,利用它可以驱动浏览器执行特定的动作,如点击、下拉等操作。对于一些Javascript渲染的页面来说,这种抓取方式非常有效。

        中文文档:http://selenium-python-zh.readthedocs.io

        pip安装:pip install selenium

        验证安装:import selenium,如没有错误提示,则安装成功

      3. ChromeDriver:

        配合Selenium进行使用。安装前确保正确安装Chrome浏览器并正常运行。

        下载地址:https://chromedriver.storage.googleapis.com/index.html

        环境变量配置:Windows下,建议直接将chromedriver.exe文件拖到Python的Scripts目录下。

        验证安装:配置完成后,可以直接在命令行下执行chromedriver命令

        chromedriver

        ​ 类似输出为:
        Starting ChromeDriver 88.0.4324.96 (68dba2d8a0b149a1d3afac56fa74648032bcf46b-refs/branch-heads/4324@{#1784}) on port 9515
        Only local connections are allowed.
        Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
        ChromeDriver was started successfully.

        ​ (Note:保持ChromeDriver运行)随后在程序中测试。执行如下Python代码:

        from selenium import webdriver
        browser = webdriver.Chrome()

        ​ 运行之后,如果弹出一个空白的Chrome浏览器则配置成功。如果弹出后闪退,则可能是Chromedriver版本与Chrome版本不兼容。

      4. GeckoDriver:

        对于Firefox,使用同样的方式完成Selenium的对接。

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

        环境变量配置:在Windows下,可以直接将geckodriver.exe文件拖到Python的Scripts目录下。

        验证安装:配置完成后,可以直接在命令行下执行geckodriver命令

        geckodriver

        ​ 类似输出为:

        1611245059623 geckodriver INFO Listening on 127.0.0.1:4444

        ​ (Note:保持GeckoDriver运行)随后在程序中测试。执行如下Python代码:

        from selenium import webdriver
        browser = webdriver.Firefox()

        ​ 运行之后,若弹出一个空白的 Firefox 浏览器,则证明所有的配置都没有问题。

      5. PhantomJS:

        UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox insteadwarnings.warn('Selenium support for PhantomJS has been deprecated, please use headless '

        (Note:selenium已经放弃PhantomJS了,建议使用火狐或者谷歌无界面浏览器)

      6. aiohttp:

        • requests是一个阻塞式HTTP请求库,当我们发出一个请求后,程序会一直等待服务器响应,直到服务器响应后,程序才会进行下一步处理。
        • aiohttp提供异步Web服务,大大提高了效率

        pip安装:pip install aiohttp


1.3解析库的安装


  • 抓取网页代码之后,下一步就是从网页中提取信息。方式多种多样,可以使用正则来提取,但是写起来相对繁琐。

    • 所以提供了解析库,如lxmlBeautiful Souppyquery等。

      1. lxml:

        支持 HTML 和 XML 的解析,支持 XPath 解析方式,而且解析效率非常高。

        pip安装:pip install lxml

        验证安装:import lxml,若没有错误提示,则安装成功。

      2. Beautiful Soup:

        是Python的一个HTML或XML的解析库,可以用它来方便地从网页中提取数据。它拥有强大的API和多样的解析方式。

        中文文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh

        准备工作:Beautiful Soup的HTML和XML解析器是依赖于lxml库的,所以在此之前请确保已经成功安装好了lxml库。

        pip安装:pip install beautifulsoup4

        验证安装:

        from bs4 import BeautifulSoup
        soup = BeautifulSoup('

        Hello

        ', 'lxml')
        print(soup.p.string)# 运行结果如下,则证明安装成功
        #Hello
      3. pyquery:

        提供了和jQuery类似的语法来解析HTML文档,支持CSS选择器

        pip安装:pip install pyquery

        验证安装:import pyquery,若没有错误报出,则安装成功。

      4. tesserocr:

        OCR,即Optical Character Recognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程。对于验证码,可以使用OCR技术将其转化为电子文本,然后爬虫将识别结果提交给服务器,便可以达到自动识别验证码的过程。

        (Note:在安装tesserocr之前,需要安装tesseract)

        • tesseract的安装

          下载地址:http://digi.bib.uni-mannheim.de/tesseract

          (Note:文件名中带有dev的为开发版本,不带的为稳定版本)

          语言包:https://github.com/tesseract-ocr/tessdata

          文档:https://github.com/tesseract-ocr/tesseract/wiki/Documentation

          下载时可以勾选Additional language data (download)选项来安装 OCR 识别支持的语言包。但是,可能由于被墙的原因,导致下载失败,会报如下错误(并不是版本的问题)。此时,可取消勾选,进行安装。单独下载语言包。 在这里插入图片描述

        • tesserocr的安装

          pip安装:pip install tesserocr pillow

          但是,问题又来了,楼主始终安装不成功。看到错误提示:缺少Visual C++。便选择了使用wheel文件进行的安装。

        在这里插入图片描述

        Wheel文件地址:https://github.com/simonflueckiger/tesserocr-windows_build/releases

        在下载Wheel文件时,要与之前tesseract的版本相一致。也是在此由于Wheel文件只有python3.7版本的,才不得不将之前Python3.9主动降级。

    在这里插入图片描述

    验证安装:`tesseract image.png result -l eng && cat result.txt`(**Note**:cat result.txt是Linux下的命令)Windows应该直接输出:`tesseract image.png stdout -l eng`


1.4数据库的安装

数据库可以分为关系型数据库和非关系型数据库。关系型数据库如SQLite、MySQL、Oracle、SQL Server、DB2等,其数据库是以表的形式存储;非关系型数据库如MongoDB、Redis,它们的存储形式是键值对,存储形式更加灵活。

  • 用到的数据库主要有关系型数据库MySQL及非关系型数据库MongoDB、Redis

  • 由于楼主已经安装完毕,暂无法给出具体安装过程。

    1. Mysql:

      官方网站:https://www.mysql.com/cn

      下载地址:https://www.mysql.com/cn/downloads

      中文教程:http://www.runoob.com/mysql/mysql-tutorial.html

    2. MongoDB:

      其内容存储形式类似JSON对象,它的字段值可以包含其他文档、数组及文档数组。

      官方网站:https://www.mongodb.com

      官方文档:https://docs.mongodb.com

      中文教程:http://www.runoob.com/mongodb/mongodb-tutorial.html

    3. Redis:

      官方网站:https://redis.io

      官方文档:https://redis.io/documentation

      中文官网:http://www.redis.cn

      中文教程:http://www.runoob.com/redis/redis-tutorial.html

      Redis Desktop Manager:https://redisdesktop.com

      Windows下:https://github.com/MSOpenTech/redis/releases


1.5存储库的安装

数据库提供了存储服务,但如果想要和Python交互的话,还需要安装一些Python存储库,如MySQL需要安装 PyMySQL,MongoDB需要安装PyMongo等。

  1. PyMySQL:

    pip安装:pip install pymysql

    验证安装:

    import pymysql
    pymysql.VERSION
    # (1, 0, 2, None)
    # 如果成功输出其版本内容,则证明成功安装

  2. PyMongo:

    pip安装:pip install pymongo

    验证安装:

    import pymongo
    pymongo.version
    # '3.11.2'
    # 如果成功输出其版本内容,则证明成功安装

  3. redis-py:

    pip安装:pip install redis

    验证安装:

    import redis
    redis.VERSION
    # (3, 5, 3)
    # 如果成功输出其版本内容,则证明成功安装

结束语:库的安装暂时到这里,如有需要再次添加完善。


推荐阅读
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 本文是Java并发编程系列的开篇之作,将详细解析Java 1.5及以上版本中提供的并发工具。文章假设读者已经具备同步和易失性关键字的基本知识,重点介绍信号量机制的内部工作原理及其在实际开发中的应用。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 本文将详细介绍如何在Mac上安装Jupyter Notebook,并提供一些常见的问题解决方法。通过这些步骤,您将能够顺利地在Mac上运行Jupyter Notebook。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • XAMPP 遇到 404 错误:无法找到请求的对象
    在使用 XAMPP 时遇到 404 错误,表示请求的对象未找到。通过详细分析发现,该问题可能由以下原因引起:1. `httpd-vhosts.conf` 文件中的配置路径错误;2. `public` 目录下缺少 `.htaccess` 文件。建议检查并修正这些配置,以确保服务器能够正确识别和访问所需的文件路径。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 在分析和解决 Keepalived VIP 漂移故障的过程中,我们发现主备节点配置如下:主节点 IP 为 172.16.30.31,备份节点 IP 为 172.16.30.32,虚拟 IP 为 172.16.30.10。故障表现为监控系统显示 Keepalived 主节点状态异常,导致 VIP 漂移到备份节点。通过详细检查配置文件和日志,我们发现主节点上的 Keepalived 进程未能正常运行,最终通过优化配置和重启服务解决了该问题。此外,我们还增加了健康检查机制,以提高系统的稳定性和可靠性。 ... [详细]
  • 在配置Nginx的SSL证书后,虽然HTTPS访问能够正常工作,但HTTP请求却会遇到400错误。本文详细解析了这一问题,并提供了Nginx配置的具体示例。此外,还深入探讨了DNS服务器证书、SSL证书的申请与安装流程,以及域名注册、查询方法和CDN加速技术的应用,帮助读者全面了解相关技术细节。 ... [详细]
  • 在优化Nginx与PHP的高效配置过程中,许多教程提供的配置方法存在诸多问题或不良实践。本文将深入探讨这些常见错误,并详细介绍如何正确配置Nginx和PHP,以实现更高的性能和稳定性。我们将从Nginx配置文件的基本指令入手,逐步解析每个关键参数的最优设置,帮助读者理解其背后的原理和实际应用效果。 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
author-avatar
benbowujixian
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有