爬虫入门(一):轻量级爬虫

今天下雨,下午没课,适合学习。(●’◡’●)

1.爬虫简介

  • 爬虫:一段自动抓取互联网信息的程序
  • 价值:互联网数据,为我所用! 新闻聚合阅读器、最爆笑故事APP、图书价格对比网、Python技术文章大全

2.简单爬虫架构

简单爬虫架构-运行流程

调度器->URL管理器->下载器->解析器->应用

3.URL管理器

URL管理器:管理待抓取URL集合和已抓取URL集合 防止重复抓取、防止循环抓取

实现方式

1.内存

Python内存  
待爬取URL集合:set()  
已爬取URL集合:set()

2.关系数据库

MySQL  
urls(url, is_crawled)

3.缓存数据库

redis
待爬取URL集合:set
已爬取URL集合:set

其中,内存适合个人,缓存数据库适合大型公司。 ### 4.网页下载器(urllib2)[核心组件]() - 网页下载器:将互联网上URL对应的网页下载到本地的工具。 - Python有那几种网页下载器? -

1.Python官方基础模块:urllib2  
2.第三方包更强大:requests

网页下载器-urllib2

  • urllib2下载网页方法1:最简洁方法 url->urllib2.urlopen(url)

对应代码:

import urllib2

#直接请求
response = urllib2.urlopen('http://www.baidu.com')

#获取状态码,如果是200表示获取成功

print response.getcode()

#读取内容
cont = response.read()
  • urllib2下载网页方法2:添加data、http header

url&data&header->urllib2.Request->urllib2.urlopen(request)

对应代码:

import urllib2

#创建Request对象
request = urllib2.Request(url)

#添加数据,向服务器提交用户数据,比如提交a这个数据的值为1
request.add_data('a','1')

#添加http的header,http头信息。这里将爬虫伪装成一个Mozilla的浏览器。
request.add_header('User-Agent','Mozilla/5.0')

#发送请求获取结果
response = urllib2.urlopen(request)

- urllib2下载网页方法3:添加特殊情景的处理器 例如: - 某些需要登录信息的网页,可以用 HTTPCookieProcessor - 某些需要代理才能访问的网页,可以用ProxyHandler - 某些使用了加密协议,可以用HTTPSHandler - 网页URL相互自动跳转关系,使用HTTPRedirectHandler 将这些Handler传送给opener = urllib2.build_opener(handler),再传送给urllib2.install_opener(opener),最后->urllib2.urlopen(url) urllib2.urlopen(request) *对应代码:*

import urllib2, cookielib

#创建cookie容器,存储cookie数据
cj = cookielib.CookieJar()

#创建1个opener
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

#给urllib2安装opener
urllib2.install_opener(opener)

#使用带有cookie的urllib2访问网页
response = urllib2.urlopen("http://www.baidu.com/")

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网杂技

为何webpack风靡全球?三大主流模块打包工具对比

前端的模块系统经历了长久的演变,对应的模块打包方案也几经变迁。从最初简单的文件合并,到AMD 的模块具名化并合并,再到browserify将CommonJS 模...

39980
来自专栏跟着阿笨一起玩NET

C#消息队列(RabbitMQ)零基础从入门到实战演练

41320
来自专栏北京马哥教育

如何利用Python网络爬虫抓取微信朋友圈的动态

今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的A...

41300
来自专栏FreeBuf

自己动手打造Github代码泄露监控工具

众说周知,Github这块肥肉很受安全人员和黑客关注。因为很多新进程序猿和老手不经意就会把他们的劳动成果分享出来,而往往这种开源精神,奉献精神会对企业带来一定的...

20020
来自专栏Rainbond开源「容器云平台」

好雨云帮近期问答集锦(1.16 - 2.5)

12830
来自专栏北京马哥教育

etcd:从应用场景到实现原理的全方位解读

马哥linux运维 | 最专业的linux培训机构 ---- 随着CoreOS和Kubernetes等项目在开源社区日益火热,它们项目中都用到的etcd组件作...

602120
来自专栏kangvcar

[face_recognition中文文档] 第5节 特约贡献

12520
来自专栏木子墨的前端日常

本机未装Oracle数据库时Navicat for Oracle 报错:Cannot create oci environment 原因分析及解决方案

因为要更新数据库加个表,远程桌面又无法连接。。。所以就远程到另外一台电脑,然后用navicat通过内网修改目标数据库。

16430
来自专栏WeTest质量开放平台团队的专栏

Android外部存储

外部存储作为开发中经常接触的一个重要系统组成,在Android历代版本中,有过许许多多重要的变更。我也曾疑惑过,为什么一个简简单单外部存储,会存在存在这么多奇奇...

14730
来自专栏张戈的专栏

Linux系统内存监控、性能诊断工具vmstat命令详解

最近,烦心事有点多,博客也像是进入了便秘期。虽然还远远不到说放弃的地步,但总有一种挤不出牙膏的郁闷感。很怀念前几个月的冲劲和激情,一天都能存好几篇优质草稿。 看...

39650

扫码关注云+社区

领取腾讯云代金券