编写一个爬虫驱动——(一)想法

有的时候,我会写一些爬虫程序来自动获取一些信息,之前一段时间用过Puppeteer来驱动Chrome获取信息,我之前也写过一系列文章来介绍它。Puppeteer是Google官方出品,本身质量非常好高,提供的功能也非常强大,但它本身并不是针对爬虫程序定制的,用起来存在如下不便之处:

  1. 提供的API过多,想找到需要的API比较费时间。
  2. 提供的API比较底层,要实现想要的功能往往需要多个接口组合
  3. 有的功能没有提供, 需要通过一些私有接口或改源码的方式来实现
  4. 日志,输入输出,任务调度,重试策略等都需要额外的库才能实现。

加上我也不是经常有些蜘蛛程序的需求,只是偶尔心血来潮的时候写一下玩玩。导致每次使用都要在Puppeteer的API列表和我之前的博客文章中查一遍才能进行功能的开发。

另外,具体开发蜘蛛程序的时候,针对站点的数据解析比较费时费力,需要提供一个方便强大的调试工具。

基于以上原因,我变有了一个自己写一个依托于Chrome,专门针对蜘蛛程序的类库的想法,主要目标如下:

  1. 提供简单的库,每次使用的时候基本上能一目了然
  2. 提供常用的库,常见的功能拿来就能使用
  3. 提供日志,输入输出,任务调度等常见的功能库集成
  4. 提供直观好用的调试工具,方便蜘蛛程序的开发

该工具我打算使用.net core来写,有宇宙第一IDE加持的话,开发和后期使用时非常简单的。我已经实现了一个小的原型了,虽然目前功能还不完善,但已经可以用来来实现一些简单的数据爬取的。

由于最近的工作和家里的事情都比较多,后面的开发进度估计就要慢不少了,我后续也会写一些文章介绍开发过程中的心得的。

原文地址:https://www.cnblogs.com/TianFang/p/11142993.html

时间: 2024-11-13 17:35:31

编写一个爬虫驱动——(一)想法的相关文章

编写一个爬虫类库——(二)准备

数据抓取方式选择: 要编写爬虫程序,首先需要选择数据抓取的方式,一般来说有如下两种: 对服务器发送Http请求,获取响应信息 利用浏览器发送请求,获取渲染完成后的数据 这里我选择方式2,具体原因我在之前的Blog文章使用Chrome快速实现数据的抓取(四)——优点中已经做过对比分析,简单来说就是使用浏览器除了性能开销较大外,其它方面基本上秒杀发送HTTP请求的原始方式. 浏览器接口: 对于浏览器的选择,我这里支持的是Chrome.Chrome提供了比较完善的开发接口Devtool Protoco

编写Python爬虫的简易流程描述

python网络爬虫,其实就是模拟人类浏览网页的行为,并将这种行为自动化的工具. 从技术上来说,就是利用python代码发送特定的request请求到Web页面,最后获得response,并将response解析,提取其中的数据并存储起来. 开发一个爬虫程序,首先要确定目标.例如爬取拉勾网的python相关职位信息是我们的目标.根据这个目标,我们可以先使用手工的方式,访问拉勾网,搜索python相关职位,从而对如何从页面获取所需信息有一个直观的理解. 其次,可以使用浏览器自带的开发者工具.抓包工

30分钟编写一个抓取 Unsplash 图片的 Python爬虫

我一直想用 Python and Selenium 创建一个网页爬虫,但从来没有实现它. 几天前, 我决定尝试一下,这听起来可能是挺复杂的, 然而编写代码从 Unsplash 抓取一些美丽的图片还是挺容易的. PS:很多人在学习Python的过程中,往往因为遇问题解决不了或者没好的教程从而导致自己放弃,为此我整理啦从基础的python脚本到web开发.爬虫.django.数据挖掘等[PDF等]需要的可以进Python全栈开发交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新

编写一个猥琐的反爬虫系统是种怎样的体验

我们所处的互联网, 是一个爬虫的世界.任何一个小公司,小团队,甚至一个应届毕业生,都有可能编写爬虫,偷偷的获取数据. 当你看到“爬虫”两个字的时候, 就应该有点血脉贲张的感觉了. 爬虫就如同病毒一样无孔不入.有的爬虫肆无忌惮地访问资源,导致服务器性能下降甚至崩溃:有的爬虫如同间谍一样秘密入侵,伪装成用户获取本不应该让它获取到的数据:有的爬虫冒充搜索引擎,堂而皇之的威胁你交出数据,可能还明目张胆的写各种教程嘲笑你们,是可忍孰不可忍?! 然而,千万要忍耐,稍稍做点什么,可以在名义上让他们胜利,实际上

编写一个陌生的linux驱动的技巧

编写一个陌生的linux驱动的技巧 当你要写一个陌生的linux子系统的驱动时,例如v4l2的camera sensor驱动.首先你得去google.百度搜索一些关于这个子系统****框架的介绍,由于网上文章往往有错误,所以你要多看几篇好的文章,从而有一定了解.然后需要看linux相关的子系统的代码,特别是子系统的api,从而更深入的了解.然后你找一个使用该子系统的应用层和驱动代码例子,进一步理解.然后你基于已有的demo硬件和该子系统设备的驱动,例如camera sensor驱动ov5640_

编写一个网易云音乐爬虫程序

本次借助wxPython编写一个网易云音乐的爬虫程序,能够根据一个歌单链接下载其下的所有音乐 前置说明 网易云音乐提供了一个下载接口:http://music.163.com/song/media/outer/url?id=xxx 所以只需要拿到歌单中每首歌曲对应的 id 即可 1.分析歌单网页元素 打开网易云音乐,复制一个歌单链接 打开chrome,查看网页元素 这里有个细节,我们拿到的歌单url中有一个符号“/#”,因为之前爬虫其他网站时,也是直接请求初始url,一般Elements标签中的

如何编写一个编译c#控制台应用程序的批处理程序

如何编写一个编译c#控制台应用程序的批处理程序 2011-03-22 18:14 dc毒蘑菇 | 浏览 579 次 最近在网上看了一个教程,是学C#的,但是我的机子上装不上vs,所以想写一个批处理来编译,因为每次都要我更改目录,然后复制路径,再编译,输出,特别的浪费时间,所以特来求助网友,希望帮帮忙 分享到: 2011-03-22 19:17 #快乐假期,智慧随行# 提问者采纳 不知道你有没有使用过ANT,你可以创建ANT脚本来构建你的应用程序.如果不是很了解,也不愿意编写的话,我介绍你一款可视

编写一个简单的jdbc例子程序

1 package it.cast.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Statement; 8 9 public class Base { 10 11 public static void main(String[] args) th

用Java语言编写一个简易画板

讲了三篇概博客的概念,今天,我们来一点实际的东西.我们来探讨一下如何用Java语言,编写一块简易的画图板. 一.需求分析 无论我们使用什么语言,去编写一个什么样的项目,我们的第一步,总是去分析这个项目需要满足怎样的需求. 那么,画板需要满足怎样的需要呢?换句话说,在画板上,我们应该赋予它什么功能呢?从我们熟悉的画板来看,我们需要实现诸如铅笔.橡皮.喷枪.刷子的功能,我们可以画出一些规则的图形,比如直线.矩形.圆.最好我们还能调整画笔的颜色和粗细.以上,我们希望的是,当我们点击一个按钮的时候,我们