在python3中使用urllib.request编写简单的网络爬虫
2015-09-03 22:29
771 查看
Python官方提供了用于编写网络爬虫的包 urllib.request, 我们主要用它进行打开url,读取url里面的内容,下载里面的图片。
分以下几步:
step1:用urllib.request.urlopen打开目标网站
step2:由于urllib.request.urlopen返回的是一个http.client.HTTPResponse object,无法直接读取里面的内容,所以直接调用该对象的方法read(),获取到页面代码,存到html里
step3:构建正则表达式,从页面代码里提取出图片url地址。
step4:根据图片url地址,用urllib.request.retrieve下载到本地
容易出错的地方:
1:python2.x和python3.x中,urlopen具体在哪个包里是不一样的。如果你要在python2.x上实现,要自行百度正确的包。
2:最容易出错的地方是正则表达式,容易出现匹配错误。我程序里写的正则表达式,在目前的网址里是正确的,如果是其他网址可能还会出问题,要具体问题具体分析,去debug。
比如如果img_re=re.compile(r'(?<=src=)"\w+?jpg"')的话,会匹配成""http://tieba.........."
下面是具体代码
分以下几步:
step1:用urllib.request.urlopen打开目标网站
step2:由于urllib.request.urlopen返回的是一个http.client.HTTPResponse object,无法直接读取里面的内容,所以直接调用该对象的方法read(),获取到页面代码,存到html里
step3:构建正则表达式,从页面代码里提取出图片url地址。
step4:根据图片url地址,用urllib.request.retrieve下载到本地
容易出错的地方:
1:python2.x和python3.x中,urlopen具体在哪个包里是不一样的。如果你要在python2.x上实现,要自行百度正确的包。
2:最容易出错的地方是正则表达式,容易出现匹配错误。我程序里写的正则表达式,在目前的网址里是正确的,如果是其他网址可能还会出问题,要具体问题具体分析,去debug。
比如如果img_re=re.compile(r'(?<=src=)"\w+?jpg"')的话,会匹配成""http://tieba.........."
下面是具体代码
相关文章推荐
- [网络流24题] 20 深海机器人 (线性规划网络优化 ,最小费用最大流)
- TCP/IP协议原理与应用笔记01:OSI网络参考模型
- HDU 4737 A Bit Fun(2013成都网络赛)
- J2SE大完结
- Linux 硬限制和软限制 http://www.52ml.net/2624.html
- HTTP 状态码的完整列表
- Linux初学之vmware Workstation 网络连接三种模式
- SGU 438 The Glorious Karlutka River =) 动态网络流
- Linux 内核编程之文件系统 VFS中的目录项对象和文件对象 http://www.linuxidc.com/Linux/2011-02/32127p2.htm
- Linux套接字与虚拟文件系统(1):初始化和创建 http://www.cppblog.com/qinqing1984/archive/2015/05/03/210521.html
- 华为交换机发现邻居操作,查看端口和ip
- Linux网络属性的管理
- 快乐理解网络协议
- HTTP Status 404 - No result defined for action cn.csdn.hr.s2sh.action.AdminAction and result success
- http协议
- HttpClient简介及特性
- 网络基础配置
- Linux套接字与虚拟文件系统(1):初始化和创建 http://www.cppblog.com/qinqing1984/archive/2015/05/03/210521.html
- cocos2d HTTP 通信封装
- HTTP状态码