如何编写爬虫?

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(使用前将#替换为@)

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

  • Groovy 中的爬虫(JSoup VS Crawler4j)

    我希望在 Groovy 中开发一个网络爬虫 使用 Grails 框架和 MongoDB 数据库 它能够爬取网站 创建网站 URL 及其资源类型 内容 响应时间和涉及的重定向数量的列表 我正在争论 JSoup 与 Crawler4j 我已经阅
  • scrapy中如何根据url过滤重复请求

    我正在使用 scrapy 和 CrawlSpider 为网站编写一个爬虫 Scrapy 提供了一个内置的重复请求过滤器 可以根据 url 过滤重复请求 另外 我可以使用过滤请求rules爬行蜘蛛成员 我想做的是过滤请求 例如 http ww
  • Googlebot 会抓取用 JavaScript 对 DOM 所做的更改吗?

    对于 SEO 我的任务是添加一个rel nofollow 所有外部链接 最简单 最不显眼的添加方式rel nofollow 每个外部链接都带有一些 jQuery 我已经做得很好 但我现在想知道 Google 是否会看到 jQuery 文档加
  • 如何抓取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 奇怪的是 上述每一项都不能每次都正常工作 对于相同的网址 有时 我可以获得内容 有时 它会
  • python中html解析和网络爬行有多大区别[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要从 django 网站中的网站获取一些数据 现在我很困惑是否应该使用 python 解析库或网络爬行库 搜索引擎库也属于同一类别
  • 使用 Jsoup 提取 Span 标签数据

    我正在尝试使用 Jsoup 提取 html 中的特定内容 下面是示例 html 内容 div class shop section line bmargin10 tmargin10 div class price section fksk
  • 如何设置Robots.txt或Apache仅在特定时间允许爬虫?

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

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

    迄今为止 我一直在研究可用的无头浏览器 发现 HtmlUnit 的使用非常广泛 与 HtmlUnit 相比 我们是否有任何具有可能优势的 HtmlUnit 替代方案 谢谢 纳恩 据我所知 HtmlUnit 是最强大的无头浏览器 你对此有什么
  • 在云服务器中运行 python 脚本的最简单方法是什么?

    我有一个网络爬行 python 脚本 需要几个小时才能完成 并且无法在我的本地计算机上完整运行 有没有一种方便的方法可以将其部署到简单的 Web 服务器 该脚本基本上将网页下载到文本文件中 如何最好地实现这一点 谢谢 既然你说性能是一个问题
  • 如何自动检索AJAX调用的URL?

    目的是对爬行蜘蛛进行编程 使其能够 1 检索此页面表格中链接的 URL http cordis europa eu fp7 security projects en html http cordis europa eu fp7 securi
  • cron 爬虫使用 Ruby 中的 Google API 将数据插入 Google 电子表格的授权问题

    我的项目是每天早上 9 00 抓取某些网络数据并将它们放入我的 Google 电子表格中 并且它必须获得读取和写入某些内容的授权 这就是为什么下面的代码位于顶部 Google API CLIENT ID blah blah CLIENT S
  • 如何从网址中删除查询?

    我正在使用 scrapy 抓取一个网站 该网站似乎将随机值附加到每个 URL 末尾的查询字符串 这将爬行变成了一种无限循环 我如何让 scrapy 忽略 URL 的查询字符串部分 See urllib urlparse http docs
  • Scrapy规则如何与爬行蜘蛛一起工作

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

    我刚刚在 virtualenv 中安装了 scrapyd client 1 1 0 并成功运行命令 scrapyd deploy 但是当我运行 scrapyd client 时 终端显示 命令未找到 scrapyd client 根据自述文
  • Scrapy - 如何抓取网站并将数据存储在 Microsoft SQL Server 数据库中?

    我正在尝试从我们公司创建的网站中提取内容 我在 MSSQL Server 中为 Scrapy 数据创建了一个表 我还设置了 Scrapy 并配置了 Python 来抓取和提取网页数据 我的问题是 如何将Scrapy爬取的数据导出到我本地的M
  • 如何抓取数十亿页面? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否可以在一台服务器上抓取数十亿个页面 如果您希望数据是最新的 则不需要 即使是搜索游戏中的小玩家也会爬行数十亿个页面 In 2006
  • 如何阅读网站内容?

    我是使用 python 2 7 的网络爬虫的新手 一 背景 现在 我想收集有用的数据AQICN org http aqicn org city shenyang usconsulate 这是一个很棒的网站 提供世界各地的空气质量数据 我想用

随机推荐

  • 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 网站和内容生成其发现结果列表 有人对如何做到这一点有任何想法吗 您将爬虫指向何处开始 它如何发回其发现并仍然继续爬行 它如何知道它发现了什么等等 可以肯定的是 你将重新发明轮