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

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

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

爬虫程序分析

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

Python主流的爬虫框架

你以为Python爬虫框架只有Scrapy么,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

基于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.0import 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首页获取到的部分信息

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.3import aiohttp

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

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

BOSS首页获取到的部分信息

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.0import 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()

BOSS招聘信息爬取

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

end

推荐阅读:

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

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

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

如有收获,点个在看,诚挚感谢

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

  1. chrome driver 获取 session_BOSS直聘招聘信息获取之使用webdriver进行爬取

    点击蓝色" 不太灵光的程序员"关注我哟 加个"星标",每天上午 09:30,干货推送! 进行网页数据爬取的方式有很多,我前面使用了requests模块添加浏览器 ...

  2. python爬取boss直聘招聘信息_Python爬虫实战-抓取boss直聘招聘信息

    Python Python开发 Python语言 Python爬虫实战-抓取boss直聘招聘信息 实战内容:爬取boss直聘的岗位信息,存储在数据库,最后通过可视化展示出来 PS注意:很多人学Pyth ...

  3. 基于‘BOSS直聘招聘信息’分析企业到底需要什么样的PHPer

    基于'BOSS直聘招聘信息'分析企业到底需要什么样的PHPer 前两篇文章都没看,好意思直接看结果? Python爬虫框架Scrapy实战 - 抓取BOSS直聘招聘信息 Pyhton爬虫实战 - 抓取 ...

  4. python爬取招聘信息_python 爬取boss直聘招聘信息实现

    原标题:python 爬取boss直聘招聘信息实现 1.一些公共方法的准备 获取数据库链接: importpymysql ''' 遇到不懂的问题?Python学习交流群:821460695满足你的需求 ...

  5. python爬取boss直聘招聘信息_Python 爬取boss直聘招聘信息!

    原标题:Python 爬取boss直聘招聘信息! 1.一些公共方法的准备 获取数据库链接: importpymysql ''' 遇到不懂的问题?Python学习交流群:821460695满足你的需求, ...

  6. python爬虫招聘-Python爬虫实战-抓取boss直聘招聘信息

    实战内容:爬取boss直聘的岗位信息,存储在数据库,最后通过可视化展示出来 PS注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑容易放弃.为此小编建了个Python全栈免费答疑.裙 : ...

  7. python爬取boss直聘招聘信息_Python笔记-爬取Boss直聘的招聘信息

    2018-05-09笔记: 最近迷上了爬虫,爬取招聘信息,存在MongoDB上 代码思路和上一篇爬取酷狗TOP500差不多,但是在使用CSS选择器的时候,有两组信息是连在一起,所以使用正则来获取 本来 ...

  8. python爬取boss直聘招聘信息_年底啦,利用Python爬取Boss直聘的招聘信息,为明年跳槽做准备...

    原标题:年底啦,利用Python爬取Boss直聘的招聘信息,为明年跳槽做准备 前言 为什么都说程序员的薪资高,但是刚开始入职的你,薪资并不是自己想象中的那样,首先是你的工作经验不足,其次就是需要不断的 ...

  9. python抓取boss直聘招聘信息

    1.目前测试情况看只能抓取头3页,后续得重新换cookie抓取. 2.如果登录自己boss账户,有可能导致账户临时被封,测试情况是个人账户被封了一个小时. #!/usr/bin/python # -* ...

最新文章

  1. 通知提示SCPromptView
  2. 【问题解决】连接mysql 8错误:authentication plugin 'caching_sha2_password
  3. CSS中overflow:scroll怎么设置只上下滚动而不左右滚动
  4. 使用Altera综合工具Quartus II下载到FPGA时无法识别USB-Blaster问题
  5. 机器学习你必须知道的几点知识
  6. Dottrace跟踪代码执行时间
  7. CCF201809(Java)
  8. 装服务器显示磁盘脱机,服务器磁盘处于脱机
  9. Hibernate延时加载
  10. 发送手机验证码通过调用第三方网易云信API(flask项目)
  11. 使用Sandcastle创建你的类库文档
  12. 吃了核辐射食物怎么办_我们经常吃的猪肉,相当一部分是核辐射照过的,会对身体有害吗...
  13. 动态字符串的存储结构的实现
  14. 掰碎了讲换行符和回车符
  15. 浅析MySQL中exists与in的使用
  16. 微信背后的产品观,背后究竟是什么?
  17. Win10问题篇:解决电脑插入耳机没声音。
  18. 大厂标配的动态化解决方案,高阶技术从未如此简单
  19. oracle表数据误删恢复,表误删恢复
  20. 排列组合问题 “n个球放入m个盒子(8种)”

热门文章

  1. jenkins 部署文档
  2. Mongodb千万级数据在python下的综合压力测试及应用探讨
  3. 测试——设计思维之获取反馈
  4. 网站数据库中“密码加密”方法思考
  5. halcon控制算子Control,持续更新
  6. HALCON示例程序novelty_detection_dyn_threshold.hdev纱网缺陷检测
  7. 有限元分析笔记01-平面应力和平面应变
  8. java数据生成excel_Java 数据库数据生成Excel
  9. android导航二级分类,Android实现腾讯新闻的新闻类别导航效果
  10. mysql日期截取年月_摄影大赛丨“我遇见最美的光”第五届全国医务人员摄影大展 截稿日期2020年8月15日...