爬虫抓取网页数据(关于python爬虫是什么意思,希望对你有所帮助!)

优采云 发布时间: 2022-01-18 17:11

  爬虫抓取网页数据(关于python爬虫是什么意思,希望对你有所帮助!)

  在爬取过程中,你也会经历一些绝望,比如被网站IP屏蔽,比如各种奇怪的验证码、userAgent访问限制、各种动态加载等等。以下是小编为大家整理的python爬虫的意思,希望对大家有所帮助。

  

  python爬虫是什么意思

  python爬虫是一个网络爬虫。网络爬虫是一个程序,主要用于搜索引擎。它读取一个网站的所有内容和链接,在数据库中建立一个相关的全文索引,然后跳转到另一个网站。看起来像一只大蜘蛛。

  当人们在互联网上搜索关键词(如google)时,他们实际上是在比较数据库中的内容以找出与用户匹配的内容。网络爬虫的好坏决定了搜索引擎的能力。例如,谷歌搜索引擎显然需要比百度更好,因为它的网络爬虫效率很高,并且有良好的编程结构。

  网络爬虫的原理

  网络爬虫系统的功能是下载网页数据,为搜索引擎系统提供数据源。许多大型网络搜索引擎系统被称为基于Web数据的搜索引擎系统采集,如Google、百度等。这显示了网络爬虫系统在搜索引擎中的重要性。除了供用户阅读的文字信息外,网页还收录一些超链接信息。网络爬虫系统通过网页中的超链接信息不断获取网络上的其他网页。正是因为这个采集进程像爬虫或者蜘蛛一样在网络上漫游,所以才叫做网络爬虫系统或者网络蜘蛛系统,英文叫Spider或者Crawler。

  网络爬虫系统一般会选择一些比较重要的出度(网页中超链接数)网站较大的URL作为*敏*感*词*URL集。网络爬虫系统使用这些*敏*感*词*集作为初始 URL 来开始数据爬取。因为网页中收录链接信息,所以会通过已有网页的URL获取一些新的URL。网页之间的指向结构可以看作是一片森林。每个*敏*感*词* URL 对应的网页是森林中一棵树的根节点。. 这样,网络爬虫系统就可以按照广度优先算法或深度优先算法遍历所有网页。由于深度优先搜索算法可能导致爬虫系统陷入网站内部,不利于搜索距离网站首页比较近的网页信息,一般采用广度优先搜索算法采集网页。网络爬虫系统首先将*敏*感*词* URL 放入下载队列,然后简单地从队列头部获取一个 URL 来下载其对应的网页。获取网页内容并存储后,通过解析网页中的链接信息可以得到一些新的URL,并将这些URL加入到下载队列中。然后取出一个URL,下载其对应的网页,然后解析,以此类推,直到遍历全网或者满足某个条件。网络爬虫系统首先将*敏*感*词* URL 放入下载队列,然后简单地从队列头部获取一个 URL 来下载其对应的网页。获取网页内容并存储后,通过解析网页中的链接信息可以得到一些新的URL,并将这些URL加入到下载队列中。然后取出一个URL,下载其对应的网页,然后解析,以此类推,直到遍历全网或者满足某个条件。网络爬虫系统首先将*敏*感*词* URL 放入下载队列,然后简单地从队列头部获取一个 URL 来下载其对应的网页。获取网页内容并存储后,通过解析网页中的链接信息可以得到一些新的URL,并将这些URL加入到下载队列中。然后取出一个URL,下载其对应的网页,然后解析,以此类推,直到遍历全网或者满足某个条件。

  学习 Python 包并实现基本的爬取流程

  大多数爬虫遵循“发送请求-获取页面-解析页面-提取和存储内容”的过程,实际上模拟了使用浏览器获取网页信息的过程。

  Python中有很多爬虫相关的包:urllib、requests、bs4、scrapy、pyspider等,建议从requests+Xpath入手。Requests 负责连接到 网站 并返回网页。Xpath 用于解析网页以便于提取。数据。

  如果你用过BeautifulSoup,你会发现Xpath省了很多麻烦,层层检查元素代码的工作都省去了。这样,基本套路就差不多了。一般的静态网站完全没有问题,豆瓣、尴尬百科、腾讯新闻等基本都能上手。

  当然,如果你需要爬取异步加载的网站,你可以学习浏览器抓取来分析真实的请求,或者学习Selenium来实现自动化。这样动态知乎、、TripAdvisor网站也可以解决。

  学习数据库基础知识并处理*敏*感*词*数据存储

  当爬回来的数据量较小时,可以以文档的形式存储。一旦数据量很大,这有点行不通。所以,掌握一个数据库是很有必要的,学习目前主流的MongoDB就可以了。

  MongoDB可以方便你存储一些非结构化的数据,比如各种评论的文字、图片的链接等。你也可以使用PyMongo在Python中更方便的操作MongoDB。

  因为这里用到的数据库知识其实很简单,主要是如何存储和提取数据,需要的时候学。

  网络爬虫的基本工作流程如下:

  1.首先选择一个精心挑选的*敏*感*词* URL 的子集;

  2.将这些网址放入待抓取的网址队列中;

  3. 从待爬取URL队列中取出待爬取的URL,解析DNS,获取主机IP,下载该URL对应的网页,存入下载的网页库中。此外,将这些 URL 放入 Crawl URLs 队列;

  4.分析已经爬取的URL队列中的URL,分析其中的其他URL,将这些URL放入待爬取的URL队列,从而进入下一个循环。

  2.3 爬取策略

  在爬虫系统中,待爬取的 URL 队列是一个重要的部分。待爬取的URL队列中的URL的排列顺序也是一个重要的问题,因为它涉及到先爬到哪个页面,再爬到哪个页面。确定这些 URL 排列顺序的方法称为爬取策略。下面重点介绍几种常见的爬取策略:

  2.3.1 深度优先遍历策略

  深度优先遍历策略是指网络爬虫会从起始页开始,每次一个链接跟踪每个链接,处理完该行后移动到下一个起始页,并继续跟踪该链接。我们以下图为例:

  遍历的路径:AFG EHI BCD

  2.3.2 广度优先遍历策略

  广度优先遍历策略的基本思想是将新下载的网页中找到的链接直接放到待爬取的URL队列的末尾。也就是说,网络爬虫会先爬取起始网页链接的所有网页,然后选择其中一个链接的网页,继续爬取该网页链接的所有网页。或者以上图为例:

  遍历路径:ABCDEF GHI

  2.3.3 反向链接策略

  反向链接数是指从其他网页指向一个网页的链接数。反向链接的数量表示网页内容被他人推荐的程度。因此,在很多情况下,搜索引擎的爬取系统会使用这个指标来评估网页的重要性,从而确定不同网页的爬取顺序。

  在真实的网络环境中,由于广告链接和作弊链接的存在,反向链接的数量并不能完全等同于他人的重要性。因此,搜索引擎倾向于考虑一些可靠的反向链接计数。

  2.3.4 部分PageRank策略

  Partial PageRank算法借鉴了PageRank算法的思想:对于下载的网页,与待爬取的URL队列中的URL一起形成一组网页,计算每个页面的PageRank值. URL 按 PageRank 值排序,并按该顺序抓取页面。

  如果每次爬取一个页面都重新计算一次PageRank值,折中的解决方案是:每爬完K个页面,重新计算一次PageRank值。但是这种情况还是有一个问题:对于下载页面中分析的链接,也就是我们前面提到的那部分未知网页,暂时没有PageRank值。为了解决这个问题,会给这些页面一个临时的PageRank值:把这个网页的所有传入链接传入的PageRank值聚合起来,从而形成未知页面的PageRank值,从而参与排序。

  2.3.5 OPIC 政策方针

  该算法实际上为页面分配了一个重要性分数。在算法开始之前,所有页面都会获得相同的初始*敏*感*词*。当某个页面P被下载时,P的*敏*感*词*分配给从P分析的所有链接,P的*敏*感*词*被清空。根据*敏*感*词*数量对待爬取URL队列中的所有页面进行排序。

  2.3.6 大网站优先策略

  所有待爬取的URL队列中的网页都按照它们所属的网站进行分类。网站需要下载的页面较多,请先下载。这种策略也称为大站点优先策略。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线