Python爬虫初步


这里要介绍一下urllib2这个模块

作用:主要是用于打开url。
核心方法:
- urlopen(url[, data][, timeout])
- 打开一个url,该url参数可以是一个string也可以是一个 Request 对象(后有介绍)。
- data参数可以是一个指定的字符串,该字符串将会送往服务器。(date应该是在标准application/ x-WWW-form-urlencoded格式的缓冲,函数urllib.urlencode()将会执行一个映射或是二元组序列返回一个该格式的字符串)
- timeout指定连接尝试的时间
- urlopen返回一个类文件的对象,该对象有三个方法:
- geturl():返回这个资源的真实url,如果网站有重定向则有用。
- info():返回打开该网站的头文件信息
- getcode():返回HTTP连接状态码
- 如果打开失败会返回一个URLError

import urllib2resp=urllib2.urlopen('http://www.baidu.com/')print resp.geturl()
print resp.info()
print resp.getcode()#结果:http://www.baidu.com/
Date: Sun, 16 Nov 2014 06:25:25 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: Close
Vary: Accept-Encoding
Set-Cookie: BAIDUID=E9E8EBF8D18F7A2F362B473DF71EC228:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BAIDUPSID=E9E8EBF8D18F7A2F362B473DF71EC228; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=0; path=/
Set-Cookie: H_PS_PSSID=8266_1458_9593_7800_9584_9475_9499_9510_9769_10024_9757_9477_7798_9454_9978_9023; path=/; domain=.baidu.com
P3P: CP=" OTI DSP COR IVA OUR IND COM "
Cache-Control: private
Cxy_all: baidu+89ed3fe869baaeddad6bcd025a131cac
Expires: Sun, 16 Nov 2014 06:24:36 GMT
X-Powered-By: HPHP
Server: BWS/1.1
BDPAGETYPE: 1
BDQID: 0xd591f85500217bb1
BDUSERID: 0200
  • install_opener(opener)

    • 生成一个OpenerDirector(后面有叙述)实例作为默认的全局opener。使用opener需要通过urlopen(),与OpenerDirector.open()是相等的。
  • build_opener([handler, …])

    • 返回一个OpenerDirector实例,这个实例包含了所给的handler,handler可以是BaseHandler或其子类的实例

Request对象

OpenerDirector对象

BaseHandler对象

HTTPRedirectHandler对象

HTTPCookieProcessor对象

ProxyHandler对象

HTTPPasswordMgr对象

AbstractBasicAuthHandler对象

HTTPBasicAuthHandler对象

ProxyBasicAuthHandler对象

AbstractDigestAuthHandler对象

ProxyDigestAuthHandler对象

HTTPHandler对象

HTTPSHandler对象

FileHandler对象

FTPHandler对象

UnknownHandler对象

HTTPErrorProcessor对象


实例

使用cookie打开:

#-*-coding:utf-8 -*-
import urllib2opener = urllib2.build_opener()
opener.addheaders = [('Cookie','name=something')]
resp=opener.open('http://www.zhihu.com')
print resp.read()

全部代码:

#-*-coding:utf-8 -*-
import urllib2
from string import strip
import re
from datetime import datetimedef getHtml(url,cookie=None):#打开url(可能携带cookie)并返回其html(字符串形式)opener = urllib2.build_opener()if(cookie):opener.addheaders = [('Cookie',cookie)]resp=opener.open(url)return resp.read()def matchItem(patternString,targetString):#正则表达式匹配需要的数据pattern=re.compile(patternString,re.I|re.S)myItem=pattern.finditer(targetString)return myItemdef matchNext(patterString,targetString):#正则匹配下一页pattern=re.compile(patterString,re.I|re.S)match=pattern.search(targetString)if match:return match.group('next')else:return Nonedef saveItem(items,*itemNames):#操作得到的数据for item in items:book=dict()for itemName in itemNames:if(itemName=='time'):book[itemName]=datetime.strptime(strip(item.group(itemName)),'%Y-%m-%d')else:book[itemName]=strip(item.group(itemName))print book['title'],book['author'],book['stat'],book['comment']if __name__ == '__main__':cookie='你的cookie信息'#可忽略nextUrl='http://book.douban.com/mine?status=collect'#爬虫网址while nextUrl://循环爬虫,知道没有下一页信息html=getHtml(url=nextUrl,cookie=cookie)#正则表达式提取一本书的信息pattern=r'<div class="info">.*?<a.*?title="(?P<title>.*?)".*?>.*?<div class="pub">(?P<author>.*?)/.*?<span class="rating(?P<stat>\d).*?">+?.*?<span class="date">(?P<time>.*?)\s.*?(</span)+?.*?<p class="comment">"?(?P<comment>.*?)"?<+?'items=matchItem(pattern,html)saveItem(items,'title','author','stat','time','comment')#正则表达式匹配下一页patternOfNext=r'<span class="next">.*?<a\s+href="(?P<next>.*?)"\s*.*?<div class="aside">'nextUrl=matchNext(patternOfNext,html)

结果
数据库系统概念 (美)Abraham Silberschatz、(美)Henry F.Korth、(美)S.Sudarshan 5 书是经典,只是读了一半就给我了很多收获,但是后面部分不符合我对这本书的期望(希望是能更好的使用数据库而不是设计数据库),也就是说我对这本书定位错了,当我有这颗心的适合才来阅读估计更好,现在再看这书应该是跟着课堂老师走了。
C和指针 Kenneth A.Reek 5 C的最佳!
费马大定理 西蒙·辛格 5 读着超赞!
仙剑奇侠传4 管平潮 4
古剑奇谭·琴心剑魄 某树、宁昼 4
数学之美 吴军 5
仙剑奇侠传3 管平潮 4
仙剑奇侠传2 管平潮 4
仙剑奇侠传1 管平潮 4
MongoDB权威指南 霍多罗夫 (Kristina Chodorow) 4 Mongo简直是黑科技,只看了半本,另外半本应该暂时用不到,等用到时候再看,至于四星原因是- -目测它14年的最新版不知道是在干什么,差了Mongo两个版本
王小波全集(第一卷 杂文) 王小波 5
鸟哥的Linux私房菜.基础学习篇(第三版) 鸟哥 5
Python学习手册(第4版) [美] Mark Lutz 5
HTML5秘籍 Matthew MacDonald 5
人类群星闪耀时 茨威格 3
算法(第4版) 塞奇威克 (Robert Sedgewick)、韦恩 (Kevin Wayne) 5 读完了大部分,最后一些没读,很多课后题都只是看了一下,没有代码实现,将书上的代码大多数都实现并看懂,估计遇到实际问题还是会再次翻阅,一本入门算法的好书
观止-微软创建NT和未来的夺命狂奔 G.Pascal Zachary 3
京华烟云(套装上下册) 林语堂 4
计算机网络 谢希仁 4
我讲个故事,你可别当真啊 囧叔 3
我们能做什么 胡适 4
美丽新世界 阿道司·赫胥黎 (Aldous Huxley) 5 对于1984而言,我认为那个畸形的社会是迟早要被推翻的,因为少了幸福,而对于美丽新世界我真心找不到任何能推翻它的迹象,里面分工明确,生活无忧,如柏拉图的理想国般,对于国家社会而言这个整体几乎是完美有序的,但是对于社会中的个人而这个幸福是建立在对自由,自我的牺牲上来的。
大教堂与集市(中文版首次出版) (美)Eric S. Raymond 4
Python Cookbook Alex Martelli、Anna Ravenscroft、David Ascher 4
精通正则表达式 Jeffrey E. F. Friedl 5
创业时, 我们在知乎聊什么? 知乎 2
起风了·菜穗子 (日) 堀辰雄 3
JavaScript高级程序设计(第3版) [美] Nicholas C. Zakas 5 查看查看
靠自己去成功 刘墉 3
星际迷航-红衫 (美)约翰·斯卡尔齐 3
Python基础教程 Magnus Lie Hetland 4
拆掉思维里的墙 古典 3 要是这本书打了四星对不起我打四星的书了
1984 [英] 乔治·奥威尔 5
HTTP权威指南 David Gourley、Brian Totty 5
西方哲学史 罗素 4 还没有读完,留着鞭尸……
人生 路遥 4
24重人格 [美] 卡梅伦·韦斯特|者:李永平 5 心理学方面很好的小说
死亡通知单·暗黑者 周浩晖 4 推理小说,比起其他的国内推理小说算是很不错了
思考,快与慢 [美] 丹尼尔·卡尼曼 4
高效程序员的45个习惯 Venkat Subramaniam、Andy Hunt 4
自卑与超越 阿尔弗雷德·阿德勒 4
算法竞赛入门经典 刘汝佳 4
网络工程师教程 雷震甲 编 2
现代操作系统 Andrew S. Tanenbaum 5
算法导论 [美] Thomas H.Cormen、Charles E.Leiserson、Ronald L.Rivest、Clifford Stein 5
锋利的jQuery 单东林、张晓菲、无魏然 4 基本略读了一遍,但用时候需要查阅
失控 [美] 凯文·凯利 4 还未读完,留到以后
PHP和MySQL Web开发(原书第4版) Luke Welling、Laura Thomson 5
PHP深度分析 2010-1 3
影响力 [美] 罗伯特·西奥迪尼 4 利用悠久的习惯来制作的圈套,但这些习惯在大多数时候都是极其有用的,如果自己在做事的时候如果能不急就可以避免大多数陷阱了
倚天屠龙记(共四册) 金庸 5
那些年,我们一起追的女孩 九把刀 3
肖申克的救赎 [美] 斯蒂芬·金 4
射雕英雄传(全四册) 金庸 5
地下铁 幾米 3
神雕侠侣 金庸 5
笑傲江湖(全四册) 金庸 4
天龙八部(全五册) 金庸 5
向左走·向右走 幾米 5
何以笙箫默 顾漫 2
达·芬奇密码 [美] 丹·布朗 4
追风筝的人 [美] 卡勒德·胡赛尼 4
活着 余华 4
文化苦旅 余秋雨 5
老人与海 海明威 4
Head First HTML与CSS(第2版) Elisabeth Robson、Eric Freeman 5
冰鉴 曾国藩 4
三体Ⅲ 刘慈欣 5
三体Ⅱ 刘慈欣 5
三体 刘慈欣 5
海边的卡夫卡 [日] 村上春树 3
挪威的森林 [日] 村上春树 4
百年孤独 [哥伦比亚] 加西亚·马尔克斯 4
富爸爸穷爸爸 [美]罗伯特.T.清崎 5
SQL学习指南 [美] Alan Beaulieu 5
围城 钱锺书 4
暗时间 刘未鹏 5 没有读过的该读一读
小王子 [法] 圣埃克苏佩里 5
天才在左 疯子在右 高铭 2 这只是一本小说而不是其他什么学科著作
了不起的盖茨比 菲茨杰拉德 4
西游日记 今何在 5 为悟空传也脑残五星
黑客与画家 [美] Paul Graham 5 简直就是程序员的心灵鸡汤- -
少有人走的路 [美] M·斯科特·派克 4
C程序设计语言 (美)Brian W. Kernighan、(美)Dennis M. Ritchie 5 这是我见过的最好的C入门的书,不尽在于此书将C语言的语法清楚的描绘给初学者,而且书中所提及的案例尤其重要,如二分查找,树等等
紫川(全五册) 老猪 5
悟空传 今何在 5
像外行一样思考,像专家一样实践——科研成功之道 (日)金出武雄 5
拖延心理学 [美] 简·博克(Jane B. Burka)、[美] 莱诺拉·袁(Lenora M. Yuen) 4
平凡的世界 路遥 5
做最好的自己 李开复 4
数据结构与算法分析 Mark Allen Weiss (维斯) 5
JAVA核心技术(卷1) Cay S. Horstmann、Gary Cornell 5
大话数据结构 程杰 4
乌合之众 (法)古斯塔夫.勒庞 5
如何阅读一本书 [美] 莫提默·J. 艾德勒、查尔斯·范多伦 5 阅读理解,能深入理解一本书,以平等的视角看待每一本书,深入书与作者,可谓是读一书识百书
自控力 [美] 凯利·麦格尼格尔 5
世界是平的(3.0版) [美] 托马斯·弗里德曼 4 一本有故事的IT史,其中有着作者很多自己的观点。
苏菲的世界 [挪] 乔斯坦·贾德 5
此间的少年 江南 5 最爱的小说之一,无需多谈
刽子手世家 (法)勒谢尔博尼埃 5 描述了法国大革命前后一个以刽子手为职业的家族的起落,不太了解起历史,但以小说的角度来看,深度,故事都有了
读大学,究竟读什么 覃彪喜 3 推荐对于自己大学迷茫的人阅读,由于我已读了这本书很久,回忆此书的内容其实有些还是从作者自身所处身份来说过于局限,对一些事物太过绝对,作者不可能给你照明你所走的路,他只是提出了自己的看法,其中有很多看法有可取之处,有一些看法在我现在看来不是很赞成,或者说不是很符合现状的。当然,这也只是我自己的看法
设计心理学 [美]唐纳德·A·诺曼 5

正则表达式在另一篇章介绍。

Python爬虫初步相关推荐

  1. python爬虫初步了解 定时任务 以及浏览器自动工作

    # Python爬虫初步了解import requests #在配置了环境下cmd启用pip install requests否则到安装路径cmd再启用代码下载 #引入requests库 res = ...

  2. python爬虫-初步使用Scrapy分布式爬虫(爬取mcbbs整合包保存名称及主要mod),大爱MC

    首先介绍一下scrapy. Scrapy一个开源和协作的框架,是为了页面抓取所设计的,使用它可以快速.简单.可扩展(通过中间件)的方式从网站中提取所需的数据. 工作流程如下 Scrapy Engine ...

  3. python爬虫初步学习

    文章目录 一.爬虫是什么? 二.使用步骤 1.引入库 2.分析网站 3.扣js代码 3.访问链接,提取数据,下载文件 总结 一.爬虫是什么? 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间, ...

  4. Python爬虫初步个人学习及心得

    自从毕设开始搞了Python之后就觉得这个东西值得研究. 但是毕设的东西非常的浅显,个人觉得最值得训练的还是Python的爬虫,谨以此开篇,作为学习和练习Python的起步. ----------学习 ...

  5. Python爬虫笔记——分析AJAX传递的JSON获取数据-初步分析动态网页

    转载文章链接: Python爬虫:分析AJAX传递的JSON获取数据-初步分析动态网页(1) [4]实战:爬取动态网页的两种思路爬取新浪趣图(1) [5]实战:爬取动态网页的两种思路爬取新浪趣图(2) ...

  6. Python入门自学进阶-Web框架——34、富文本编辑器KindEditor、爬虫初步

    KindEditor是一个轻量级的富文本编辑器,应用于浏览器客户端. 一.首先是下载:http://kindeditor.net/down.php,如下图 下载后是 解压缩后: 红框选中的都可以删除到 ...

  7. 学完python基础开始学爬虫_零基础入门Python爬虫不知道怎么学?这是入门的完整教程...

    这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬 ...

  8. 如何自学python爬虫-零基础入门Python爬虫不知道怎么学?这是入门的完整教程

    这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬 ...

  9. python爬虫教程入门-零基础入门Python爬虫不知道怎么学?这是入门的完整教程

    原标题:零基础入门Python爬虫不知道怎么学?这是入门的完整教程 这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑 ...

最新文章

  1. c++小项目:通讯录管理系统
  2. thinkphp+ajax无刷新分页并加载显示图片
  3. python基础应用_【复习】mysql+python基础应用(20190815)
  4. CSS3笔记之基础篇(一)边框
  5. C和C++里面常见错误和异常出现怎么解决总结(不断更新)
  6. python词频统计结果写入csv_Python词频对比并导入CSV文件
  7. linux常用解压和压缩文件的命令
  8. 校园招聘 - 比较容易的面试题
  9. 当设计模式遇上 Hooks
  10. springMVC接收请求参数的几种方式
  11. 双鸭山2021年高考成绩查询,黑龙江双鸭山2021年上半年教师资格证成绩查询时间...
  12. 怎样在javascript中直接设置好打印方式为横向或纵向(測試未果)
  13. 使用JMeter 进行接口并发性能测试
  14. Multisim14.0详细安装教程
  15. django安装mysqlclient报错mand errored out with exit status 1: python setup.py egg_info Check the logs f
  16. 机器数的一些知识点 | 计算机网络
  17. html正则表达式判断手机号,js正则表达式根据手机号判断校验运营商
  18. 免费使用IDEA,Pycharm等官方正版软件Jetbrains学生认证教程
  19. 著者四角号码查询_著者姓名汉语拼音与四角号码数字混编书次号的研究
  20. mac下后端开发常用软件

热门文章

  1. 用dos命令查看计算机E盘,用DOS命令获取文件列表
  2. 思科模拟器packet Tracer 的简单使用
  3. CDH 报错:under replicated blocks
  4. css:打造一个故障风格按钮button
  5. 科奥斯扫地机器人_如何选购扫地机器人?
  6. 关于公司的下一步,如何找到革命性的商业点子?
  7. 十大战略工具(7)—— PEST模型
  8. 教你把好听的背景音乐设置成铃声
  9. 业财融合视角下的项目管理体系建设
  10. 2018-7.29-interactive visualization and visual analytics-马匡六