5.5写一个爬虫

(这一章我失败了,暂时放弃一下)

一个网络爬虫能自动浏览网页,并从网页上抓取我们想要的信息。网络爬虫应用很广,很多搜索引擎都是用爬虫抓取并分析网页信息,从而让不同的网页对应不同的搜索关键字。许多研究互联网行为的学者也会用爬虫抓取网络信息,用来进一步分析人们使用互联网的行为。还有一些下载网络视频或图片的软件,也是基于爬虫来完成主要工作的。很多时候,爬虫可以非常复杂,运行起来也相当耗时。 这里用爬虫做一件简单的事,即让它访问笔者的博客首页,提取出最近文章的发表日期和阅读量。

第一步当然是访问博客首页,获得首页的内容。根据5.4节的内容, 这非常简单。笔者的博客的地址是,www.cnblogs.com/vamei主机地址是 www.cnblogs.com,资源位置是/vameio这个页面是一个超文本文件,所 以我们用HTTP协议访问:

import http.client

conn = http. client.HTTPConnection("www. cnblogs. com") # 主机地址

conn・ request("GET", "/vamei")

#请求方法和资源路径

#获得回复

response

=conn.getresponse()

content =

response.read()

#回复的主体内容

content =

content.splitC'XrXn")

#分割成行

这里的content是列表,列表的每个元素是超文本的一行。对于我们所关心的信息来说,它们存在的行看起来是下面的样子:

<div class="postDesc">posted @ 2014-08-12 20:55 Vamei 阅读(6221)评论(11) <a href ="博客后台 - 博客园" rel= "nofollow"> 编辑 </ax/div>

我们想要的信息,如2014-08-12 20:55,以及阅读量6221镶嵌在一串 文字中。要想提取出类似这样的信息,我们很自然地想到了 5.3节的正则表达式:

import re pattern = "posted @ (\d{4}-[0-l]\d-(0-3}\d [0-2]\d: [0-6]\d) Vamei 阅读 \((\d+)\)评论”

for line in content:

m = re.search(patternline)

if m != None:

print(m.group(l)m.group(2))

把两段程序合在一起,将打印出如下结果:

2016-03-23

14:08

9622

2016-03-23

07:12

1787

2016-03-22

11:20

1161

2015-05-11

13:08

5864

2014-10-01

12:50

5584

2014-09-01 05:41 9073

2014-08-20

10:48

6971

2014-08-16

11:51

5682

2014-08-13

22:43

7119

2014-08-12

20:55

6221

根据本章的内容,你还可以把日期转换成日期对象,进行更复杂的 操作,如查询文章是星期几发表的。你还可以把上面的内容写入文件,长久的保存起来。可以看到,这个简单的程序中包含了不同方面的知识内容。

#我失败的代码:import http.clientconn = http.client.HTTPConnection("www.twosetapparel.com")
conn.request("GET","/collections/shop-all/products/twoset-practice-sweater-vest")
response = conn.getresponse()content = response.read()
content = content.split("\r\n")
#主要是这一行的问题:TypeError: a bytes-like object is required, not 'str'print(str(content))import repattern = "posted @ (\d{4}-[0-1]\d-{0-3}\d [0-2]\d:[0-6]\d) Vamei 阅读\((\d+)\)评论"
for line in content:m = re.search(pattern,line)if m !=None:print(m.group(1),m.group(2))

​​​​​​​

云学python (第5章对象带你飞之爬虫)《vamei-从Python开始学编程》 笔记相关推荐

  1. 云学python (第5章对象带你飞之储存 上下文管理器pickle 包)《vamei-从Python开始学编程》 笔记

    2.上下文管理器 文件操作常常和上下文管理器一起使用.上下文管理器(context manager)用于规定某个对象的使用范围.一旦进入或者离开该使用范围, 则会有特殊操作被调用,比如为对象分配或者释 ...

  2. 云学python (第5章对象带你飞之储存 文件)《vamei-从Python开始学编程》 笔记

    对象能提供丰富的功能,比如文件读.写.时间日期管理.正则表达式和网络爬虫. 5.1存储 1.文件 Python中的数据都保存在内存中.当电脑断电时,内存中的数据就会消失.另一方面,如果Python程序 ...

  3. 云学python (第5章对象带你飞之HTTP通信)《vamei-从Python开始学编程》 笔记

    1.HTTP通信简介 在通信这个神秘的过程中,参与通信的个体总要遵守特定的协议(Protocol).为了多层次地实现全球互联网通信,计算机通信也有一套多层次的协议体系. HTTP协议是最常见的一种网络 ...

  4. python第三章课后答案_XX医学院本科各专业《Python》第三章习题与答案-2020年实用精品...

    XX医学院本科各专业<Python>第三章习题与答案 一.填空题 1.python语言提供.和3种数字类型.(整数.浮点数.复数) 2.整数类型有4种进制表示,默认情况采用十进制,二进制数 ...

  5. scrapy框架---带你飞向爬虫路(九)

    回顾(八)系统学习出门左转一到八 scrapy框架 五大组件+工作流程+常用命令 [1]五大组件1.1) 引擎(Engine)1.2) 爬虫程序(Spider)1.3) 调度器(Scheduler)1 ...

  6. python第四章答案猜数游戏_猜数游戏python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本文实例为大家分享了python实现猜数游戏的具体代码,供大家参考,具体内容如下 ...

  7. python标准库导入对象语句_下面哪些是正确的Python标准库对象导入语句?-智慧树Java程序设计(山东联盟-鲁东大学)章节答...

    Java程序设计(山东联盟-鲁东大学):下面哪些是正确的Python标准库对象导入语句?[单选题] A:保证两个或多个进程同时启动和结束 B:保证两个或多个线程同时启动和结束 C:保证任何时候只有一个 ...

  8. python字典和集合对象可以进行索引操作_Python中的字典跟集合整理笔记

    泛映射类型 映射类型:不仅仅是dict,标准库里的所有映射类型都是利用dict来实现的,因此它们有个共同的限制,即只有可散列的数据类型才能用做这些映射的键.(只有键有这个需求,值并不需要必须是可散列的 ...

  9. python抓取网页数据并截图_网络爬虫-使用Python抓取网页数据

    搬自大神boyXiong的干货! 闲来无事,看看了Python,发现这东西挺爽的,废话少说,就是干 准备搭建环境 因为是MAC电脑,所以自动安装了Python 2.7的版本 添加一个 库 Beauti ...

最新文章

  1. Java 并发编程笔记(一)
  2. web浏览器录音:web audio api
  3. Confluence 6 配置系统属性
  4. .net MVC路由
  5. 框架升级后某个类型所在程序集发生转移,应用还能正常运行吗?
  6. 河海大学计算机科学考研真题,河海大学计算机与信息学院845电子技术基础历年考研真题汇编.pdf...
  7. 知识分享:如何用插件实现操作校验
  8. 用python编写密码安全性_密码安全性
  9. VoosteQ Material Comp for Mac - 尖端音频压缩器
  10. floodlight路由机制分析
  11. 手游加速器:[求助]安卓端 手游变速器,类似光环助手的实现方式是怎样的?...
  12. 企业管理小故事【有问题4个管理小法则】
  13. 解决“Windows 平台 FIPS 验证的加密算法的一部分”问题
  14. 闪存文件系统(Flash File System)
  15. AutoCAD安装失败
  16. 网络带宽相关知识和计算
  17. Windows下端口冲突的解决方法
  18. 明星为啥选嫁官家富家?
  19. 程序员不是工程师吗,他们之间有什么区别?
  20. spread运算符_JavaScript中的Spread运算符有什么用?

热门文章

  1. 一行代码就可以“黑”掉任意网站
  2. VS2017安装时出现win 10SDK安装不了的问题,错误代码:1327
  3. 二、Neo4j-增、删、改
  4. 爬取古诗词网的诗经全文
  5. AIOps:实现运维智能化的一大利器
  6. 微粒贷小贴士:了解网络虚假APP诈骗套路,以防上当受骗
  7. IPTV技术的主要发展趋势
  8. 薪酬体系怎么设计?详解HR薪酬体系设计的方法、步骤与工具
  9. 从0开发《工程测绘大师》小程序之程序列表实现篇(六)
  10. CentOS 6.3图形界面自定义开启终端快捷键