2020年8个效率最高的爬虫框架

一些较为高效的Python爬虫框架。分享给大家。

1.Scrapy

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。。用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。

项目地址:https://scrapy.org/

2.PySpider

pyspider 是一个用python实现的功能强大的网络爬虫系统,能在浏览器界面上进行脚本的编写,功能的调度和爬取结果的实时查看,后端使用常用的数据库进行爬取结果的存储,还能定时设置任务与任务优先级等。

项目地址:https://github.com/binux/pyspider

3.Crawley

Crawley可以高速爬取对应网站的内容,支持关系和非关系数据库,数据可以导出为JSON、XML等。

项目地址:http://project.crawley-cloud.com/

4.Portia

Portia是一个开源可视化爬虫工具,可让您在不需要任何编程知识的情况下爬取网站!简单地注释您感兴趣的页面,Portia将创建一个蜘蛛来从类似的页面提取数据。

项目地址:https://github.com/scrapinghub/portia

5.Newspaper

Newspaper可以用来提取新闻、文章和内容分析。使用多线程,支持10多种语言等。

项目地址:https://github.com/codelucas/newspaper

6.Beautiful Soup

Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间。

项目地址:https://www.crummy.com/software/BeautifulSoup/bs4/doc/

7.Grab

Grab是一个用于构建Web刮板的Python框架。借助Grab,您可以构建各种复杂的网页抓取工具,从简单的5行脚本到处理数百万个网页的复杂异步网站抓取工具。Grab提供一个API用于执行网络请求和处理接收到的内容,例如与HTML文档的DOM树进行交互。

项目地址:http://docs.grablib.org/en/latest/#grab-spider-user-manual

8.Cola

Cola是一个分布式的爬虫框架,对于用户来说,只需编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过程对用户是透明的。

项目地址:https://github.com/chineking/cola

Python爬虫:常用的爬虫工具汇总


将工具按照以上分类说明,按照学习路线顺序给出参考文章

一、页面下载器

  1. requests(必学)
    1. python爬虫入门requests模块
    2. Python爬虫:requests库基本使用
    3. Python爬虫:使用requests库下载大文件
    4. Python爬虫:requests多进程爬取猫眼电影榜单
    5. requests InsecureRequestWarning: Unverified HTTPS request is being made.


  1. scrapy
    1. Python网络爬虫之scrapy框架
    2. scrapy学习
    3. Python爬虫:关于scrapy模块的请求头
    4. Python爬虫:scrapy框架请求参数meta、headers、cookies一探究竟
    5. Python爬虫:scrapy辅助功能实用函数
  2. selenium+chrome + PhantomJS(抓取动态网页,不推荐)
    1. mac下安装selenium+phantomjs+chromedriver
    2. Python爬虫:selenium模块基本使用
    3. Python爬虫selenium模块
    4. Python爬虫:selenium和Chrome无头浏览器抓取烯牛数据动态网页
    5. Python爬虫:利用selenium爬取淘宝商品信息
    6. Python爬虫:selenium使用chrome和PhantomJS实用参数


  1. Splash(抓取动态网页,推荐)
    1. Python爬虫:splash的安装与简单示例
    2. Python爬虫:splash+requests简单示例
    3. Python爬虫:scrapy利用splash爬取动态网页

总结: 对于下载器而言,python自带的urllib就不要花时间去学了,学了就忘,直接requests能满足大部分测试+抓取需求,进阶工程化scrapy,动态网页优先找API接口,如果有简单加密就破解,实在困难就使用splash渲染

二、页面解析器

  1. BeautifulSoup(入门级)
    1. Python爬虫入门BeautifulSoup模块


  1. pyquery (类似jQuery)
    1. Python爬虫:pyquery模块解析网页
  2. lxml
    1. Python爬虫:使用lxml解析网页内容


  1. parsel
    1. Extract text using CSS or XPath selectors
  2. scrapy的Selector (强烈推荐, 比较高级的封装,基于parsel)
    1. 选择器(Selectors)
    2. python爬虫:scrapy框架xpath和css选择器语法

总结: 其实解析器学习一个就够了,其他都不用学,很多培训会教你从上到下的学习,我不是很推荐,直接学习scrapy的Selector 就行,简单、直接、高效

三、数据存储

  1. txt文本
    1. Python全栈之路:文件file常用操作


  1. csv文件
    1. python读取写入csv文件
  2. sqlite3 (python自带)
    1. Python编程:使用数据库sqlite3


  1. MySQL
    1. SQL:pymysql模块读写mysql数据
  2. MongoDB
    1. Python编程:mongodb的基本增删改查操作

总结: 数据存储没有什么可深究的,按照业务需求来就行,一般快速测试使用MongoDB,业务使用MySQL

四、其他工具

  1. execjs :执行js Python爬虫:execjs在python中运行javascript代码
  2. pyv8: 执行js mac安装pyv8模块-JavaScript翻译成python
  3. html5lib 1. Python爬虫:scrapy利用html5lib解析不规范的html文本

五、关于xpath练习

本人的一个开源项目:PageParser github.com/mouday/PageP 用于解析网页,最终实现6行代码写爬虫,可以贡献代码,顺便练习网页解析的能力


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抑制过拟合之正则化与Dropout

避免过拟合: 1、增大数据集合 – 使用更多的数据,噪声点比减少(减少数据扰动所造成的影响) 2、减少数据特征 – 减少数据维度,高维空间密度小(减少模型复杂度) 3、正则化 / dropout / 数据增强…

谈谈神经网络的大规模训练优化

文 | 立交桥跳水冠军源 | 知乎大规模神经网络训练一般会涉及到几百个分布式节点同时工作,模型的参数量以及运算量往往很大,作者认为在这个task下当前的工作主要归结为以下三种:对通信本身的优化,神经网络训练通信的优化&#xff0…

LeetCode 1108. IP 地址无效化

文章目录1. 题目2. 解题1. 题目 给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。 所谓无效化 IP 地址,其实就是用 “[.]” 代替了每个 “.”。 示例 1:输入:address "1.1.1.1" 输出:&…

Android NDK开发入门学习笔记(图文教程,极其详尽)

以前也简单用过JNI,但是只是简单用一下,好多都不明白。最近在看源码部分,有涉及到JNI调用的,所以这次打算彻底把它搞定。 先普及一下JNI的调用关系:JAVA------------------------>JNI----------------------------…

论文浅尝 | 利用问题生成提升知识图谱问答

论文笔记整理:谭亦鸣,东南大学博士生,研究方向为知识库问答。来源:NLPCC2019链接:http://tcci.ccf.org.cn/conference/2019/papers/183.pdf本文提出了一种利用问题生成提升知识图谱问答模型性能的方法(一个…

顶会论文:基于神经网络StarNet的行人轨迹交互预测算法

1.背景 民以食为天,如何提升超大规模配送网络的整体配送效率,改善数亿消费者在”吃“方面的体验,是一项极具挑战的技术难题。面向未来,美团正在积极研发无人配送机器人,建立无人配送开放平台,与产学研各方共…

python操作mysql数据库实现增删改查

python操作mysql数据库实现增删改查 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。 Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: GadFlymSQLMySQLPostgreSQLMicrosoft …

tf2: Gradients do not exist for variables when minimizing the loss.

WARNING:tensorflow:Gradients do not exist for variables when minimizing the loss. 情况一 该变量没有参与最后loss的计算 (1)如果直接没有参与计算,其实很好就能找出来,删掉无用变量即可; (2&#xff…

LeetCode 654. 最大二叉树(递归)

文章目录1. 题目2. 解题1. 题目 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素。 左子树是通过数组中最大值左边部分构造出的最大二叉树。 右子树是通过数组中最大值右边部分构造出的最大二叉树。 通过给…

Probe:Android线上OOM问题定位组件

配送骑手端App是骑手用于完成配送履约的应用,帮助骑手完成接单、到店、取货及送达,提供各种不同的运力服务,也是整个外卖闭环中的重要节点。由于配送业务的特性,骑手App对于应用稳定性的要求非常高,体现App稳定性的一个…

Android中使用官方提供好的功能使用说明(比如系统图库获取),也作为延生学习的学习文档

这篇文章最核心的就是去学习如何学习Android,如何去使用Android文档。 我们一般在刚开始接触开发的时候,如果遇到无法解决的问题,常常会百度,或者google去寻找答案,比如有个需求是获取系统中的图片,你可能…

再介绍一篇Contrastive Self-supervised Learning综述论文

文 | 黄浴源 | 知乎之前已经介绍过三篇自监督学习的综述:《怎样缓解灾难性遗忘?持续学习最新综述三篇!》。这是最近2020年10月arXiv上的又一篇论文"A Survey On Contrastive Self-supervised Learning"。论文地址:https…

GCN-Based User Representation Learning for Unifying Robust Recommendation and Fraudster Detection

GCN-Based User Representation Learning for Unifying Robust Recommendation and Fraudster Detection 点击率预测:其主要思想是根据用户的历史行为对一组未评级的项目进行评级预测,然后从预测评级最高的项目中选择个性化推荐。 欺诈检测:…

公开课 | 知识图谱构建与应用概述

本文转载自公众号:博文视点Broadview。 AI是新的生产力,知识图谱是AI进步的阶梯。随着近年来人工智能的进一步发展,知识图谱也取得了一系列新的进展,并在各个行业中落地应用。知识图谱的相关技术已经在搜索引擎、智能问答、…

python中mysql更新字段中传参问题

更新表 可以使用“UPDATE”语句,更新表格内的现有记录: 示例 将地址栏由“Valley 345”改写为“Canyoun 123”: import mysql.connectormydb mysql.connector.connect(host"localhost",user"你的用户名",passwd"你的密码",databa…

LeetCode 217. 存在重复元素(哈希)

文章目录1. 题目2. 解题1. 题目 给定一个整数数组,判断是否存在重复元素。 如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。 示例 1:输入: [1,2,3,1] 输出: true 示例 2:输入: [1,2,3,4] 输出:…

美团BERT的探索和实践

2018年,自然语言处理(Natural Language Processing,NLP)领域最激动人心的进展莫过于预训练语言模型,包括基于RNN的ELMo[1]和ULMFiT[2],基于Transformer[3]的OpenAI GPT[4]及Google BERT[5]等。下图1回顾了近…

解决AndroidStudio添加ProjectLibary后在编译时遇到的各种问题之解决方式索引(finished with non-zero exit value and so on...)

解决AndroidStudio添加ProjectLibary后在编译时遇到的各种问题之解决方式索引(finished with non-zero exit value and so on...)因为项目需要,我需要将一个外部工程作为Libary导入项目,起初导入还是比较简单的,但是在编译的时候就遇到了各种…

论文浅尝 | 探索将预训练语言模型用于事件抽取和事件生成

论文笔记整理:郝凯龙,南京大学硕士链接:https://www.aclweb.org/anthology/P19-1522.pdf动机传统的 ACE 事件抽取任务依赖于人工标注的数据,耗费大量的人力并且数据量有限,数据量不足给事件抽取带来了阻碍。传统的事件…

谷歌、CMU发文:别压榨单模型了!集成+级联上分效率更高!

文 | Sherry 不是小哀集成模型(Ensemble)可以提升模型的精度,但往往面临提升计算量的困境,用级联模型(Cascade)在预测时提前中断则可解决计算量的问题。最近,谷歌和CMU的研究者对此进行了深入的…