博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
近期的爬虫工作杂谈
阅读量:6292 次
发布时间:2019-06-22

本文共 1304 字,大约阅读时间需要 4 分钟。

前言

最近在做自然语言理解处理相关的东西,主要是信息抽取方面的需求,由于没有好的公开数据集用作训练及测试,于是只能先自己去权威平台上爬取收集数据,所以这就涉及到了爬虫。

关于语言

写爬虫用什么语言?由于我较熟且常用的大语言是 java、c++ 和 python。所以用这三种语言写爬虫其实都可以很快写出来,之前写爬虫较多用 java,现在觉得在小项目且要求快速实现的场景下用 python 效率还是很高的,毕竟python有很多工具包而且本身就是一门表达能力很强的语言。而如果对性能比较看重可以C++,较大大型企业级项目看中可扩展可维护则可以java。另外大点的项目也要综合考虑下分布式集群方面。

scrapy解决普通需求

python中一般常用Scrapy框架来实现爬虫,上手很容易,通过scrapy startproject mySpider生成项目结构,如下,

D:\>scrapy startproject mySpiderNew Scrapy project 'mySpider', using template directory ..You can start your first spider with:    cd mySpider    scrapy genspider example example.com复制代码

然后根据需要编写,

  1. items.py中定义字段
  2. spiders目录下编写爬虫
  3. pipelines.py存储数据
  4. 其他需求

以上完了直接scrapy crawl my_spider就开始爬。

遇到有js怎么办

现在很多网站都会需要执行js逻辑段,很多时候不执行js的逻辑就无法爬取,比如有些用js生成访问key等等,这时一般有三个思路解决:

  1. 硬翻译,就是死啃js源码,看懂逻辑后再翻译成爬虫语言实现一遍。
  2. 使用js执行引擎库,很多语言都有js引擎库,这时就把js逻辑交由库来实现,省掉了自己去搞js逻辑的工作,效果很理想。这种方式效率高,但有时有些网站访问需要的参数很多而且获取很麻烦,用这种方式代价较大。
  3. 调浏览器方式,这种方式其实是完全模拟了人工操作,它需要打开浏览器,然后通过脚本自动操作页面上的各个元素,从而实现抓取数据,比如让他自动翻页,自动下载等。这种方式效率明显低,但它基本不用自己去研究里面的各种参数,实现代价小。工具比如有selenium。

小结

在语言方面,在实现方式上面,根据不同的人,根据不同的工程需求及场景都是可以有不同的选择,这些都需要我们自己去思考然后选择一个适合该项目的方案。切忌手上有一个锤子就哪里看起来都像钉子。

-------------推荐阅读------------

------------------广告时间----------------

公众号的菜单已分为“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”等,可能有一款适合你的胃口。

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以购买。感谢各位朋友。

欢迎关注:

转载地址:http://ymkta.baihongyu.com/

你可能感兴趣的文章
【转载】每个程序员都应该学习使用Python或Ruby
查看>>
PHP高级编程之守护进程,实现优雅重启
查看>>
PHP字符编码转换类3
查看>>
rsync同步服务配置手记
查看>>
http缓存知识
查看>>
Go 时间交并集小工具
查看>>
iOS 多线程总结
查看>>
webpack是如何实现前端模块化的
查看>>
TCP的三次握手四次挥手
查看>>
关于redis的几件小事(六)redis的持久化
查看>>
webpack4+babel7+eslint+editorconfig+react-hot-loader 搭建react开发环境
查看>>
Maven 插件
查看>>
初探Angular6.x---进入用户编辑模块
查看>>
计算机基础知识复习
查看>>
【前端词典】实现 Canvas 下雪背景引发的性能思考
查看>>
大佬是怎么思考设计MySQL优化方案的?
查看>>
<三体> 给岁月以文明, 给时光以生命
查看>>
Android开发 - 掌握ConstraintLayout(九)分组(Group)
查看>>
springboot+logback日志异步数据库
查看>>
Typescript教程之函数
查看>>