如何编写爬虫?

2024-01-24

我曾想过尝试编写一个简单的爬虫程序,它可以爬行并为我们的 NPO 网站和内容生成其发现结果列表。

有人对如何做到这一点有任何想法吗?您将爬虫指向何处开始?它如何发回其发现并仍然继续爬行?它如何知道它发现了什么等等。


可以肯定的是,你将重新发明轮子。但基础知识如下:

  • 未访问过的 URL 列表 - 使用一个或多个起始页面作为种子
  • 访问过的 URL 列表 - 这样您就不会兜圈子
  • 一组针对您不感兴趣的 URL 的规则 - 这样您就不会为整个互联网建立索引

将它们放入持久存储中,以便您可以停止和启动爬虫而不会丢失状态。

算法是:

while(list of unvisited URLs is not empty) {
    take URL from list
    remove it from the unvisited list and add it to the visited list
    fetch content
    record whatever it is you want to about the content
    if content is HTML {
        parse out URLs from links
        foreach URL {
           if it matches your rules
              and it's not already in either the visited or unvisited list
              add it to the unvisited list
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何编写爬虫? 的相关文章

  • 如何使用Goutte获取元描述内容

    您能帮我找到一种使用 Goutte 从元描述 元关键字和机器人内容中获取内容的方法吗 另外 我该如何定位 and
  • Robots.txt - 多个用户代理的抓取延迟的正确格式是什么?

    下面是一个示例机器人 txt文件允许多个用户代理 with 多次抓取延迟对于每个用户代理 抓取延迟值仅供说明之用 在真实的 robots txt 文件中会有所不同 我在整个网络上搜索了正确的答案 但找不到 有太多混合的建议 我不知道哪个是正
  • 如何抓取foursquare签到数据?

    是否可以通过贪心的方式从foursquare中爬取签到数据 即使我与所有用户没有友谊 就像抓取公开的 Twitter 消息一样 如果您有什么经验或建议 请分享 谢谢 如果您有包含 foursquare 链接的公开推文 您可以通过发出 HEA
  • 语法错误,插入“...VariableDeclaratorId”来完成FormalParameterList

    我遇到此代码的一些问题 import edu uci ics crawler4j crawler CrawlConfig import edu uci ics crawler4j crawler CrawlController import
  • 如何通过php从外部网页获取内容?

    我想获取网页中的 标题 描述和关键字 我知道实现这项工作的 3 种方法 a 使用CURL b 使用 fopen c 使用 get meta data 奇怪的是 上述每一项都不能每次都正常工作 对于相同的网址 有时 我可以获得内容 有时 它会
  • 无法从 Scrapy 脚本访问 request.response.meta['redirect_urls']

    我无法访问request response meta redirect urls 来自我的 Scrapy 脚本 但在 Scrapy shell 中访问同一网页的此信息没有问题 当我打印钥匙时request response meta我只看到
  • 如何设置Robots.txt或Apache仅在特定时间允许爬虫?

    由于 24 小时内流量分布不均匀 我希望在高峰时段禁止爬虫 在非繁忙时段允许爬虫 有没有一种方法可以实现这一目标 编辑 感谢所有的好建议 这是我们找到的另一个解决方案 2bits com 有一篇关于设置 IPTables 防火墙以限制来自某
  • 如何查找网站上的所有链接/页面

    是否可以找到任何给定网站上的所有页面和链接 我想输入一个 URL 并生成该站点所有链接的目录树 我查看过 HTTrack 但它下载了整个站点 我只需要目录树 查看链接检查器 https linkchecker github io linkc
  • 有已知网络爬虫的列表吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试获取网络服务器上某些文件的准确下载数量 我查看了用户代理 其中一些显然是机器人或网络爬虫 但
  • php将所有链接转换为绝对url

    我正在用 php 编写一个网站爬虫 并且我已经有了可以从网站提取所有链接的代码 问题 网站使用绝对 URL 和相对 URL 的组合 示例 http 替换为 hxxp 因为我无法发布超链接 hxxp site com site com sit
  • 制作一个网络爬虫/蜘蛛

    我正在考虑制作一个网络爬虫 蜘蛛 但我需要有人为我指明正确的方向才能开始 基本上 我的蜘蛛将搜索音频文件并为其建立索引 我只是想知道是否有人对我应该如何做有任何想法 我听说用 PHP 完成它会非常慢 我知道 vb net 那么这能派上用场吗
  • 我们可以从 LinkPresentation 框架中的 LPLinkView 中提取图像吗?

    我想在我的应用程序中呈现丰富的链接 并将这些数据发送到我的服务器 我需要访问视图内的图像LPLinkView https developer apple com documentation linkpresentation lplinkvi
  • Scrapy仅抓取网站的一部分

    您好 我有以下代码来扫描给定站点中的所有链接 from scrapy item import Field Item from scrapy contrib spiders import CrawlSpider Rule from scrap
  • 检测诚实的网络爬虫

    我想 在服务器端 检测哪些请求来自机器人 我现在并不关心恶意机器人 只关心那些表现良好的机器人 我见过一些方法 主要涉及将用户代理字符串与 bot 等关键字进行匹配 但这似乎很尴尬 不完整且无法维护 那么有人有更可靠的方法吗 如果没有 您是
  • 如何生成大型网站的图形站点地图[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想为我的网站生成图形站点地图 据我所知 有两个阶段 抓取网站并分析链接关系 提取树形结构 生成视觉上
  • 如何使用 cURL 和 PHP 抓取 LinkedIn 公司页面?在标头错误中找不到 CSRF 令牌

    我想用 cURL 和 PHP 抓取一些 LinkedIn 公司页面 LinkedIn 的 API 不是为此构建的 因此我必须使用 PHP 来完成此操作 如果还有其他选择 请告诉我 在抓取公司页面之前 我必须通过 cURL 使用个人帐户登录
  • Scrapy规则如何与爬行蜘蛛一起工作

    我很难理解 scrapy 爬行蜘蛛规则 我有一个例子 它并不像我希望的那样工作 所以它可能是两件事 我不明白规则是如何运作的 我形成了不正确的正则表达式 导致我无法获得所需的结果 好吧 这就是我想做的 我想编写爬行蜘蛛 它将获取所有可用的统
  • Nodejs:带有 URL 列表的异步请求

    我正在研究爬虫 我有一个需要请求的 URL 列表 如果我不将其设置为异步 则会同时有数百个请求 我担心它会爆炸我的带宽或产生对目标网站的大量网络访问 我应该怎么办 这是我正在做的事情 urlList forEach url index gt
  • Scrapy - 如何抓取网站并将数据存储在 Microsoft SQL Server 数据库中?

    我正在尝试从我们公司创建的网站中提取内容 我在 MSSQL Server 中为 Scrapy 数据创建了一个表 我还设置了 Scrapy 并配置了 Python 来抓取和提取网页数据 我的问题是 如何将Scrapy爬取的数据导出到我本地的M
  • Scrapy - 使用蜘蛛名称同时记录到文件和标准输出

    我决定使用 Python 日志记录模块 因为 Twisted on std error 生成的消息太长 我想INFO级别有意义的消息 例如由StatsCollector在维护屏幕消息的同时写入单独的日志文件 from twisted pyt

随机推荐

  • Angular JS 在 POST 请求中验证 CSRF 令牌

    我正在使用 AngularJS 和 Rails 我有以下批量更新用户的请求 http method POST url scope update url params selected ids userIds 由于 URL 长度的限制 这不能
  • TextView 样式 ArrayIndexOutOfBoundsException

    我的管理控制台中的 PlayStore 经常发生崩溃 我不明白为什么它会崩溃 我从未重现过此崩溃 它似乎仅来自三星 Galaxy 设备 但不太确定 从 SDK 版本 4 1 4 2 4 3 开始 这是完整的 StackTrace andro
  • 使用 f 字符串固定小数点后的数字

    有没有一种简单的方法可以使用Python f 字符串来固定小数点后的位数 特别是 f 字符串 而不是其他字符串格式选项 如 format 或 例如 假设我想显示小数点后 2 位数字 我怎么做 这么说吧 a 10 1234 在格式表达式中包含
  • 嵌套 ItemsControl 存在严重性能问题

    我使用嵌套的 ItemsControl 来显示分层数据 问题是 即使数据很少 速度也非常慢 它还会完全阻塞 UI 线程 直到加载数据 我在这里做错了什么 生成演示数据并将其绑定到 ItemsControl 的代码 private void
  • 在 CakePHP 3 中哪里放置自定义 PHP 类?

    我有一个新的 PHP 类 我想从控制器调用它 在 CakePHP 文件夹结构中 我应该将这个新类放在哪里 从控制器调用或使用它的过程是什么 预先感谢您的合作 从我的角度来看 您可以重用任何自己的类以及任何第三方类作为utility班级 如果
  • 如何处理一个读取三角形三边并在输入有效的情况下计算面积的家庭作业程序?

    这是我的任务 创建一个名为 MyTriangle 的类 其中包含以下两个方法 Return true if the sum of any two sides is greater than the third side public sta
  • VBA用公式填充多张纸上的单元格

    我正在尝试为工作簿的每张工作表中的每个单元格设置公式 我需要将 2 个公式分布在 2 个不同的单元格范围内 我在 Variant 中定义了 strFormula 1 和 2 对于公式1 我希望分配到A到AJ列下的单元格 对于公式 2 我希望
  • 改变时间轴刻度标签的字体大小

    我正在根据常规时间轴绘制时间序列数据 目前 我使用默认的 多刻度 刻度格式 因此我在 X 轴上看到日期与 AM PM 小时的组合 现在 如何以更大的字体显示日期 使它们从小时刻度中脱颖而出 所有刻度似乎都有相同的 刻度 CSS 类 所以我无
  • R部分字符串匹配和返回值(在R中)

    我有多个采购数据库 我需要在其中运行我构建的 关键字 列表来识别某些产品 如果有匹配 我想将产品标记到手术类别 这是一个例子 采购数据库 实际上我有超过2 000 000行要查看 d lt data frame prod desc c BA
  • XCode 全局断点不显示堆栈跟踪

    我从 libobjc A dylib 和 CoreFoundation 位置设置了全局断点 我运行我的 iPhone 应用程序 它遇到了异常 XCode 在断点处停止 但在日志中没有显示任何错误 待处理断点 1 objc exception
  • java aes javax.crypto.BadPaddingException:给定的最终块未正确填充

    public class AES public String getEncrypt String pass String password encrypt pass return password public String getDecr
  • WSO2 API Manager 网关集群。如何在 api-manager.xml 中设置网关端点

    我计划在我的公司使用 WSO2 API 管理器 因此尝试使其能够集群工作 它由 Keymanager Gateway manager worker Publisher 2 个 AWS 实例上的 Store 组成 Host1包含Keymana
  • 切换无状态反应组件数组的可见性

    我试图简单地映射从 api 返回的一些数据 并为每个返回的对象创建一个无状态组件 我希望能够单击任何组件来切换其其余数据的可见性 我尝试了多种方法来做到这一点 但一直碰壁 我还搜索了堆栈溢出 但似乎找不到答案 我已经通过使它们成为单独的类组
  • 从 MySQL 中的分层数据生成基于深度的树(无 CTE)

    嗨 很多天我一直在 MySQL 中解决这个问题 但是我无法弄清楚 你们有什么建议吗 基本上 我有一个类别表 其中包含以下域 id name 类别名称 以及parent 类别的父类别的 ID 示例数据 1 Fruit 0 2 Apple 1
  • GAE python:如何使用delete_serving_url

    首先我将图像存储 import cloudstorage as gcs path bucket folder image jpg with gcs open path w as f f write data 然后我得到服务网址 url im
  • 如何动态调整导航栏中的标题大小

    我有一些视图显示在导航控制器中 其中两个视图的导航栏标题较长 问题是 当标题太长而无法容纳时 某些字符会被截断并添加 有什么方法可以告诉导航栏自动调整标题文本的大小以适应 在 ViewDidload 中使用以下代码 目标C self tit
  • 如何使用 2.01 的功能,同时仍然通过一个 apk 支持 1.5?

    我希望我的 Activity 使用 2 01 的某些功能 但我需要它能够在 1 5 设备上运行 据我所知 1 5 设备将无法运行 2 01 功能 但这很好 但我仍然希望他们能够使用其余的活动 我使用 Eclipse 作为 IDE 如何正确设
  • mysql中如何选择一段时间?

    我想做一段时间的MySql选择 但我不知道如何正确地制作它 这就是我尝试过的 SELECT FROM rapoarte WHERE DATE ziua BETWEEN 2010 01 12 AND 2011 01 14 你能帮忙吗 谢谢 塞
  • 数据声明的类型类约束

    显然 在数据声明上放置类型类约束是一个坏主意 src https stackoverflow com questions 2354707 in haskell is there num a infinity a rq 1 comment23
  • 如何编写爬虫?

    我曾想过尝试编写一个简单的爬虫程序 它可以爬行并为我们的 NPO 网站和内容生成其发现结果列表 有人对如何做到这一点有任何想法吗 您将爬虫指向何处开始 它如何发回其发现并仍然继续爬行 它如何知道它发现了什么等等 可以肯定的是 你将重新发明轮