iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python如何实现简易Web爬虫
  • 673
分享到

Python如何实现简易Web爬虫

2024-04-02 19:04:59 673人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章给大家分享的是有关python如何实现简易WEB爬虫的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   简介:   网络爬虫(又被称为网页蜘蛛),网络机器人,是一种按

这篇文章给大家分享的是有关python如何实现简易WEB爬虫的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

  简介:

  网络爬虫(又被称为网页蜘蛛),网络机器人,是一种按照一定的规则,自动地抓信息的程序或者脚本。假设互联网是一张很大的蜘蛛网,每个页面之间都通过超链接这根线相互连接,那么我们的爬虫小程序就能够通过这些线不断的搜寻到新的网页。

  Python作为一种代表简单主义思想的解释型、面向对象、功能强大的高级编程语言。它语法简洁并且具有动态数据类型和高层次的抽象数据结构,这使得它具有良好的跨平台特性,特别适用于爬虫等程序的实现,此外Python还提供了例如Spyder这样的爬虫框架,BeautifulSoup这样的解析框架,能够轻松的开发出各种复杂的爬虫程序。

  在这篇文章中,使用Python自带的urllib和BeautifulSoup库实现了一个简单的web爬虫,用来爬取每个URL地址及其对应的标题内容。

  流程:

  爬虫算法从输入中读取的一个URL作为初始地址,向该地址发出一个Request请求。

  请求的地址返回一个包含所有内容的,将其存入一个String变量,使用该变量实例化一个BeautifulSoup对象,该对象能够将内容并且将其解析为一个DOM树。

  根据自己的需要建立正则表达式,最后借助html标签从中解析出需要的内容和新的URL,将新的放入队列中。

  对于目前所处的URL地址与爬去的内容,在进行一定的过滤、整理后会建立索引,这是一个单词-页面的存储结构。当用户输入搜索语句后,相应的分词函数会对语句进行分解获得关键词,然后再根据每个关键词查找到相应的URL。通过这种结构,可以快速的获取这个单词所对应的地址列表。在这里使用树形结构的存储方式,Python的字典和列表类型能够较好的构建出单词词典树。

  从队列中弹出目前的URL地址,在爬取队列不为空的条件下,算法不断从队列中获取到新的网页地址,并重复上述过程。

  实现:

  环境:

  python3.5orAnaconda3

  BeautifulSoup4

  可以使用下面的指令安装BeautifulSoup4,如果你是ubuntu用户,记得在命令前面加上sudo:

  程序分别实现了几个类,分别用于URL地址管理,Html内容请求、Html内容解析、索引建立以及爬虫主进程。我将整个程序按照每个Class分开解释,最后只要将他们放在一起就可以执行代码了。

  UrlManager类

  这个类用来管理URL地址,new_urls用来保存还未爬取的URL地址,old_urls保存了已经爬取过的地址,两个变量都使用set类型保证其中内容的唯一性。每次循环时,add_new_urls()向外提供了向new_urls变量中添加新urls的方法;add_new_url()方法,对每个url地址进行重复性检查,符合条件的才进行添加操作;get_urls()向外提供了获取新的url地址的方法;has_new_url()方法用来检查爬取队列是否为空。

  HtmlDownloader类

  这个类实现了向url地址发送Request请求,并获取其回应的方法,调用类内的download()方法就可实现。这里要注意的是页面的编码问题,这里我使用的是UTF-8来进行decode解码,有的网页可能使用的是GBK编码,要根据实际情况进行修改。

  HtmlParser类

  这个类通过实例化一个BeautifulSoup对象来进行页面的解析。它是一个使用Python编写的HTML/XML文档解析器。它通过将文档解析为DOM树的方式为用户提供需要抓取的数据,并且提供一些简单的函数用来处理导航、搜索、修改分析树等功能。

  该类的关键是_get_new_urls()、_get_new_content()、get_url_title()三个方法。第一个方法用来解析出页面包含的超链接,最为重要的选择要解析的标签并为其构造合适的正则表达式。这里我为a标签定义了一个匹配正则,用来获取所有的站内链接,如下:

  后面的两个类都是通过解析Html标签来获取title的方法,最终在parse()中通过调取_get_new_content()来获得title内容。具体的标签访问方法不细谈了,读者可以自己翻阅BeautifulSoup的官方文档。

  BuildIndex

  该类为每个URL地址与他的标题包含的关键词建立了一个索引关系并保存在一个Dict变量中,每个标题对应多个关键词,每个标题也对应多个url地址,因此每个关键词也对应了多个url地址,具体的形式如下:

  index={'keyWord':[url1,url2,...,urln],...}

  其中,add_page_index()方法对每个标题进行了分词处理,并且调用了add_key_index()方法将keyword-url的对应关系存到索引中,这其中也进行了重复检查。主意,这个分词方法仅限于英文句子,中文的话需要用到特定的分词工具

  SpiderMain

  这是爬虫的主题类,它通过调用其他几个类生成的对象来实现爬虫的运行。该类实例化的时候会永久生成上面几个类的对象,当通过craw()方法获取到用户提供的url地址时,就会依次进行请求、下载、解析、建立索引的工作。最后该方法会返回index,graph两个变量,他们分别是:

  每个关键词集齐对应的地址,keyword-urls索引,如下

  index={'keyword':[url1,url2,...,urln],...}

  每个url及其页面中包含的urls,url-suburls索引,如下

  graph={'url':[url1,url2,...,urln],...}

  最后,我们在程序中添加下面的代码,就可以成功的执行我们的爬虫了

感谢各位的阅读!关于“Python如何实现简易Web爬虫”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Python如何实现简易Web爬虫

本文链接: https://www.lsjlt.com/news/91442.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python如何实现简易Web爬虫
    这篇文章给大家分享的是有关Python如何实现简易Web爬虫的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   简介:   网络爬虫(又被称为网页蜘蛛),网络机器人,是一种按...
    99+
    2024-04-02
  • 如何使用HttpClient和HtmlParser实现简易爬虫
    这篇文章给大家分享的是有关如何使用HttpClient和HtmlParser实现简易爬虫的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   HttpClient 简介   H...
    99+
    2024-04-02
  • python实现简单爬虫--爬图片
    首先有两个功能需求:第一:获取到要爬的页面html内容;第二:使用正则表达式进行匹配并进行保存到本地。#!/usr/bin/env python #encoding:utf-8 import urllib import re def get...
    99+
    2023-01-31
    爬虫 简单 图片
  • 【Python】使用Python做简易爬虫爬取B站评论
    目录 一、前言 二、分析网页 三、代码 1.头 2.获取根评论 3.获取子评论 四、总代码 五、总结 一、前言         B站评论没有查找功能,就随手写了一个爬虫爬取B站评论存储到本地txt中         首先需要安装pyth...
    99+
    2023-08-31
    python 爬虫 开发语言
  • 如何实现爬虫
    这篇文章主要为大家展示了“如何实现爬虫”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何实现爬虫”这篇文章吧。第一步要确定爬取页面的链接由于我们通常爬取的内容不止一页,所以要注意看看翻页、关键字...
    99+
    2023-06-02
  • python爬虫基础之简易网页搜集器
    简易网页搜集器 前面我们已经学会了简单爬取浏览器页面的爬虫。但事实上我们的需求当然不是爬取搜狗首页或是B站首页这么简单,再不济,我们都希望可以爬取某个特定的有信息的页面。 不知道在学...
    99+
    2024-04-02
  • Python如何实现短视频爬虫
    这篇文章主要介绍了Python如何实现短视频爬虫,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。网站地址在代码里面,大家用心一下就能看到了。使用的软件python 3...
    99+
    2023-06-25
  • 如何在Python中实现一个简单的爬虫程序
    如何在Python中实现一个简单的爬虫程序随着互联网的发展,数据已成为当今社会最宝贵的资源之一。而爬虫程序则成为了获取互联网数据的重要工具之一。本文将介绍如何在Python中实现一个简单的爬虫程序,并提供具体的代码示例。确定目标网站在开始编...
    99+
    2023-10-22
    Python 程序 爬虫
  • 使用Python实现简单的爬虫框架
    目录一、请求网页二、解析 HTML三、构建爬虫框架爬虫是一种自动获取网页内容的程序,它可以帮助我们从网络上快速收集大量信息。在本文中,我们将学习如何使用 Python 编写一个简单的...
    99+
    2023-05-19
    Python如何实现爬虫框架 Python爬虫框架 Python爬虫
  • golang如何实现爬虫
    作为当前互联网时代最热门的编程语言之一,Golang在爬虫领域也拥有着不俗的表现。那么,本文就来介绍一下,如何利用Golang语言来实现一个高效的爬虫程序。一、爬虫的概念爬虫,又称网络爬虫、网络蜘蛛、网络机器人等,是一种模拟人类在网络上对网...
    99+
    2023-05-15
  • 如何使用Python实现一个简易版Web服务器
    今天小编给大家分享一下如何使用Python实现一个简易版Web服务器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、简介我...
    99+
    2023-07-05
  • Python如何用爬虫破解滑动验证码?这五步简单易用
    在使用python爬虫抓取数据的时候经常会遇到网站为了防止机器人登录而设置了验证,除了最基本的字符验证之外还有滑块验证、图片验证、顺序验证等等验证方式。那我们今天就来讲一下python如何用爬虫破解滑...
    99+
    2023-09-04
    python 爬虫 开发语言
  • PHP实现简单爬虫的方法
    PHP实现简单爬虫的方法,php实现爬虫 本文实例讲述了PHP实现简单爬虫的方法。分享给大家供大家参考。具体如下: ...
    99+
    2023-09-08
    php 爬虫 开发语言
  • python实现简易ATM
    环境:python2.7可以进一步完善# -*- coding: utf-8 -*- print u"+========================================+" print u"+=============201...
    99+
    2023-01-31
    简易 python ATM
  • python PyQt5 爬虫实现代码
    搞一个图形化界面还是挺酷的,是吧 安装库什么的应该不用多说了吧。。 一般来说会让你把 designer.exe(编辑图形化界面的东西,跟vb差不多) 当作外部工具导入到 pychar...
    99+
    2024-04-02
  • python爬虫如何爬取图片
    这篇文章主要介绍了python爬虫如何爬取图片,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pytho...
    99+
    2023-06-14
  • 如何用python实现简易聊天室
    本篇内容主要讲解“如何用python实现简易聊天室”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用python实现简易聊天室”吧!1.功能:类似qq群聊功能有人进入聊天室需要输入姓名,姓名不...
    99+
    2023-06-20
  • Python如何写出最简单的网页爬虫
    Python如何写出最简单的网页爬虫,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。最近对python爬虫有了强烈地兴趣,在此分享自己的学习路径。1.开发工具笔者使用的工具是...
    99+
    2023-06-17
  • python中如何使用Scrapy实现定时爬虫
    这篇文章将为大家详细讲解有关python中如何使用Scrapy实现定时爬虫,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型...
    99+
    2023-06-14
  • 怎么用.net core 实现简单爬虫
    本篇内容主要讲解“怎么用.net core 实现简单爬虫”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用.net core 实现简单爬虫”吧!一.介绍一个Http请求框架HttpCode.C...
    99+
    2023-06-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作