python3 爬虫 requests安装_BOSS直聘招聘信息获取之爬虫工具分析

点击蓝色“不太灵光的程序员”关注我哟

加个“星标”,每天上午 09:30,干货推送!

5844b3d38c0232b1b03c6602ae300454.png

文中使用的组件库仅限于Python语言,由于最近收到一些同学的留言说,按照网上的教程一步一步的学习,却频繁的出现报错,很多情况是因为版本不一致的问题导致的,我会在文中描述示例的库版本号,新手同学还需多加留意。

爬虫程序分析

我们可以使用很多方式来完成一个爬虫程序的编写,可以使用比较完善的爬虫框架(博主是并没有使用过这方面的框架,只会些小打小闹的,所以不过多描述),也可以使用request、aiohttp、BeautifulSoup库实现基础的爬虫功能,我们后面的学习也是基于这几个库迭代完成的。

Python主流的爬虫框架

你以为Python爬虫框架只有Scrapy么,Python中还有些主流的爬虫框架我们在此简答介绍下

1.Scrapy

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

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

9aab8a0c4d6b50db763a49242da1693d.png

2.PySpider

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

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

172345a51b0c01ccdd65cc60ec468280.png

3.Crawley

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

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

14d361e01254a8f065683dd2de217bff.png

4.Portia

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

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

e338a805f8f354d2b8bbb874890a0608.png

5.Newspaper

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

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

03a4d08397bfb97329bfbbd3760fb6d5.png

6.Beautiful Soup

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

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

6e1a322d997d42694cf8b99c7fc0e15f.png

7.Grab

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

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

206845d01e6eb4f4f3070857fca2f64d.png

8.Cola

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

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

基于Cola实现的爬虫位于contrib/目录下。目前实现了四个爬虫:

  • wiki:维基百科。

  • weibo:新浪微博爬虫。从初始用户出发,然后是其关注和粉丝,依次类推,抓取指定个数的新浪微博用户的微博、个人信息、关注和粉丝。其中,用户微博只获取了内容、赞的个数、转发和评论的个数等等,而没有具体去获取此微博被转发和评论的内容。

  • generic(unstable):通用爬虫,只需配置,而无需修改代码。目前Cola实现了一个抽取器(cola/core/extractor),能够从网页正文中自动抽取主要内容,即去除类似边栏和底脚等内容。但是,此抽取器目前准确度还不够,效率也不够高,所以需要谨慎使用。

  • weibosearch(unstable):新浪微博搜索的爬虫。这个爬虫使用cola.core.opener.SpynnerOpener,基于spynner实现了一个Opener能够执行JavaScript和Ajax代码。目前这个爬虫存在的问题是:新浪微博可能会将其识别成机器人,因此有可能会让输入验证码。

到此,想要学框架的同学可以准备关闭网页了。

先了解下后面爬取需要的模块

Requests 模块

帮助文档:https://requests.readthedocs.io/en/master/

虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “HTTP for Humans”,说明使用更简洁方便。

Requests 继承了urllib2的所有特性。Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。

核心功能:

  • Keep-Alive & 连接池

  • 国际化域名和 URL

  • 带持久 Cookie 的会话

  • 浏览器式的 SSL 认证

  • 自动内容解码

  • 基本/摘要式的身份认证

  • 优雅的 key/value Cookie

  • 自动解压

  • Unicode 响应体

  • HTTP(S) 代理支持

  • 文件分块上传

  • 流下载

  • 连接超时

  • 分块请求

  • 支持 .netrc

Requests 支持 Python 2.6—2.7以及3.3—3.7,而且能在 PyPy 下完美运行。

简单的页面获取

我们来尝试获取BOSS的首页。

# Python3.7
# requests==2.23.0
import requests


def run():
req = requests.get('https://www.zhipin.com')
if req.status_code == 200:
print(req.content.decode("utf-8"))


if __name__ == "__main__":
run()

BOSS首页获取到的部分信息a279a04c097e55633e9b6c150cba582f.png

aiohttp 模块

aiohttp是一个为Python提供异步HTTP 客户端/服务端编程,基于asyncio(Python用于支持异步编程的标准库)的异步库。由于是基于asyncio的,所以支持 Python 3.5+,如果你使用的是Python 3.4, 请将await替换成yield from,将async 替换成带有 @corotine装饰器的def。

帮助文档:https://docs.aiohttp.org/en/stable/

核心功能:

  • 同时支持客户端使用和服务端使用。

  • 同时支持服务端WebSockets组件和客户端WebSockets组件,开箱即用。

  • web服务器具有中间件,信号组件和可插拔路由的功能。

简单的页面获取

我们还是来获取BOSS的首页。

# Python3.7
# aiohttp==3.6.3
import aiohttp


async def run():
async with aiohttp.ClientSession() as session:
async with session.get('https://www.zhipin.com') as resp:
assert resp.status == 200
print(await resp.text())


if __name__ == "__main__":
asyncio.run(run())

BOSS首页获取到的部分信息bc3c8645e82b5c3d669f1738cbe865a4.png

bs4模块

Beautiful Soup 4.4.0 文档

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

  • Beautiful Soup 4 支持 Python2.x 和Python3.x

  • Beautiful Soup3 支持 Python2.x

  • Beautiful Soup 4兼容Beautiful Soup3的功能

帮助文档:https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/

简单的页面数据提取

我们还是来提取BOSS的title。

# Python3.7
# requests==2.23.0
import requests


def run():
req = requests.get('https://www.zhipin.com')
if req.status_code == 200:
content = req.content.decode("utf-8")
content = bs(content, "html.parser")
print(content.find("title").text)


if __name__ == "__main__":
run()

597328cbbc1b7e1fe168f0ff8eb7feb5.png

BOSS招聘信息爬取

到此我们需要的基本工具就介绍完了,点波关注,后面会继续分享 如何将这些工具运用到实战中。

end

推荐阅读:

  • BOSS直聘招聘信息获取之网站分析

  • BOSS直聘招聘信息获取之爬虫工具分析

  • BOSS直聘招聘信息获取之爬虫程序分析

如有收获,点个在看,诚挚感谢129e790588ae75ab7660d0a628c4f648.png

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

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

相关文章

假期周进度总计(四)

本周学习利用OEM工具创建删除表以及对表内数据进行增删改查的操作 一切均通过此工具进行,然后还学到了用SQL *Plus进行相应操作 本周每天4.5个小时,出现的错误就是点击的误操作,可以改正,下周进一步学习Oracle基本操作转载于:http…

Java集合框架(3)

Map(和Collection<E>一样都是集合框架的顶层接口) |--Hashtable:底层是哈希表数据结构&#xff0c;不可以用null对象作为键或值。它是线程同步的。 |--HashMap&#xff1a;底层是哈希表。允许使用null键null值&#xff0c;该集合是不同步的&#xff0c;效率高&#xff0c…

php函数从数组中取出指定的数目,PHP数组函数

1.array_rand()从数组中随机取出一个或多个元素(返回值是&#xff1a;随机元素的键)$arr[js,css,25,php,30];printf(%s,print_r($arr,true));//随机去2个元素$resarray_rand($arr,2);printf(%s,print_r($res,true));2.array_replace()使用后面数组元素相同 key 的值替换 array1…

存储过程 not supported yet_让我们来看看+Redis如何存储和计算一亿用户的活跃度

1前段时间&#xff0c;在网上看到一道面试题&#xff1a;如何用redis存储统计1亿用户一年的登陆情况&#xff0c;并快速检索任意时间窗口内的活跃用户数量。觉得很有意思&#xff0c;就仔细想了下 。并做了一系列实验&#xff0c;自己模拟了下 。还是有点收获的&#xff0c;现整…

HBase查询优化

1.概述 HBase是一个实时的非关系型数据库&#xff0c;用来存储海量数据。但是&#xff0c;在实际使用场景中&#xff0c;在使用HBase API查询HBase中的数据时&#xff0c;有时会发现数据查询会很慢。本篇博客将从客户端优化和服务端优化两个方面来介绍&#xff0c;如何提高查询…

NEC SV8100电话交换机配置梓博电话计费系统

为了节约办公成本&#xff0c;规范电话使用。公司最近为NEC SV8100电话交换机系统上线了一套梓博的电话计费系统。先将配置过程分享给各位。 1、登录电话交换机系统&#xff08;默认用户名tech、密码12345678&#xff09; 2、点击系统数据配置按钮 2、通过10-01选项调整电话交换…

判断闰年 php,PHP怎么判断一年是否为闰年?

判断是否为闰年的条件是满足下列二者条件之一&#xff1a;年号能被4整除、但不能被100整除&#xff0c;二是年号能被4整除&#xff0c;又能被400整除。那么PHP怎么判断一年是否为闰年&#xff1f;下面本篇文章就来给大家介绍一下使用PHP判断一年是否为闰年的方法&#xff0c;希…

redis desktop manager_面试官:Redis分布式锁如何解决锁超时问题?

Java面试笔试面经、Java技术每天学习一点Java面试关注不迷路作者&#xff1a;wangzaiplus来源&#xff1a;https://www.jianshu.com/u/8cb4591440ca一、前言关于redis分布式锁, 查了很多资料, 发现很多只是实现了最基础的功能, 但是, 并没有解决当锁已超时而业务逻辑还未执行完…

python print 换行_Python学习 | Python的基础语法

Python 语言与 Perl&#xff0c;C 和 Java 等语言有许多相似之处。但是&#xff0c;也存在一些差异&#xff0c;编写Paython程序之前需要对语法有所了解&#xff0c;才能编写规范的Python程序。一、行和缩进Python最大的特点之一就是Python 的代码块不使用大括号 {}了&#xff…

python 创建文件_Python入学首次项目,新手必看,简单易操作

继昨天文章python软件pycharm安装教程之后&#xff0c;今天则给新手小白们分享一哈&#xff0c;怎么制作并创建文件。print “hello world”&#xff1b;如后期需要资料文件的则可以私信留言&#xff0c;领取首次项目资料。本节知识点&#xff1a;python项目的创建pycharm的使用…

ajax跨域实现

2019独角兽企业重金招聘Python工程师标准>>> 我们都知道ajax是不能跨域的&#xff0c;那么怎么实现ajax跨域呢&#xff1f; 看了看jquery&#xff0c;当然&#xff0c;jquery封装的很好&#xff0c;$.ajax就可以实现跨域&#xff0c;只需要在参数中配置一下即可&am…

python leetcode_leetcode 刷题经验,主力 python

1. 树的先序遍历可以求高度&#xff0c;后序遍历可以求深度。剑指 Offer 55 - II. 平衡二叉树​leetcode-cn.com2. 二叉搜索树的中序遍历可以递增地返回所有元素。逆序的中序遍历&#xff08;即先右子节点&#xff0c;再根节点&#xff0c;再左子节点&#xff09;可以递减的返回…

sqlldr 导入乱码,Oracle客户端字符集问题

2019独角兽企业重金招聘Python工程师标准>>> 1&#xff0c;查Oracle数据库创建时候的字符集&#xff1a; Oracle服务器端执行 SQL> select name, value$ from sys.props$ where name like NLS%; NAME VALUE$ ------------------------------ -------------------…

Python在mysql中进行操作是十分容易和简洁的

首先声明一下&#xff0c;我用的是Windows系统&#xff01; 1、在Python中对mysql数据库进行操作首先要导入pymysql模块&#xff0c;默认情况下&#xff0c;Python中是没有安装这个模块的&#xff0c; 可以在Windows的命令行中用pip install pymysql来安装&#xff08;注意要连…

讲php fpm的书,细说PHP-fpm

最近在研究PHP的源码&#xff0c;有时候会延伸到很多东西。这里就专程找了下php-fpm的内容学习下。是什么&#xff1f;在理解php-fpm之前&#xff0c;我们要先搞清楚几个关键词以及他们之间的关系:CGIFastCGIphp-fpmphp-cgi.CGI:(Common Gateway Interface)&#xff0c;即通用网…

安卓微软雅黑字体ttf_618巨献丨精致的悦黑5字重小字体

悦黑字体简介去年双十一当天&#xff0c;小编应大家要求&#xff0c;分享了一款悦黑小字体&#xff0c;苹果和安卓都有&#xff1a;双十一巨献&#xff1a;令人瑟瑟发抖的5字重悦黑小字体大半年时间过去了&#xff0c;一直没有更新&#xff0c;今天抽空更新一下。悦黑是由造字工…

伪静态隐藏域名后缀_你想知道的动态URL、静态URl、伪静态URL概念及区别都在这里!...

【小宅按】我们说url的动态、静态、伪静态三种形式&#xff0c;其实从严格分类上来说&#xff0c;伪静态也是动态的一种&#xff0c;只是表现形式为静态。参考&#xff1a;动态url、静态url和伪静态url的详细讲解 - 好文分享动态URl动态页面的特征1、以ASP、PHP、JSP、ASP.NET …

700多位老人的“智慧”养老记

“智慧”养老&#xff0c;受益的不只是居住养老公寓的老年人&#xff0c;养老机构本身也受益匪浅。 2012年12月&#xff0c;由汇晨养老公司机构管理有限公司(简称汇晨养老公司)与NEC中国共同开发的智能老年公寓信息化系统投入运行&#xff0c;生活在北京昌平区北七家汇晨老年公…

docker 安装nginx_docker安装nginx搭建简单文件共享服务

使用nginx开启目录浏览功能&#xff0c;实现简单的http文件共享服务。一、 首先拉取nginx镜像&#xff0c;我使用的是arm32v7/nginx镜像。docker pull arm32v7/nginx二、运行一个临时的nginx实例&#xff0c;复制容器内的nginx.conf配置文件到主机上docker run --name tmp-ngin…

java _web之Servlet简单应用

Servlet是一种独立于平台和协议的服务器端的Java应用程序&#xff0c;可以生成动态的web页面。它担当Web浏览器或其他http客户程序发出请求、与http服务器上的数据库或应用程序之间交互的中间层。 所谓动态网页&#xff0c;就是在不同时刻或不同条件下访问Web服务器上的同一个页…