大纲
1、新浪微博爬虫概览
1)主要内容和结果说明
2)主要步骤和本地保存文件截图
2、基本工具的使用:urllib2、beautifulsoup、regex和HttpFox、Firebug等
1)urllib2:
a)urllib2的基本用途、主要函数:urlopen、request、urlencode
b)如何post数据、cookie的设置、headers的设置
c)浏览器插件简介
2)beautifulsoup:
a)Bs的安装、基本用途
b)Bs的基本语句和常见问题
c)其他格式的数据怎么处理:json、JavaScript
3)regex:
a)正则表达式的基本用途
b)Re模块的基本语句
4)异常和处理方式
a)try….except
b)HTTP 异常码
5)文件读写创建等常用操作
6)关于编码问题
7)运用以上工具实现一个基本的网页抓取
例子:抓取失信名单
3、关于抓微博数据的经验
1)模拟登陆
2)程序设计
3)常见问题
一、新浪微博爬虫概览
从一个起始用户开始,爬取(1)主页、头像信息;(2)前五页的粉丝关注列表;(3)所有微博内容、发表时间(4)提取每条微博中at、转发、评论、点赞的用户。根据这个起始用户爬到的所有关系用户,遍历这些关系用户的相同内容。
一共提取了三级网络,共5万多名用户的信息。
一些步骤和结果展示:
图一:用户主页和使用浏览器插件定位源代码
图二:本地保存的点文件和边文件python正则表达式匹配小数
图三:用户10503的相关用户信息列表
图四:用户基本信息及其相关用户中受教育比例,就业比例信息
图五:微博列表和每页微博的保存
二、基本工具的使用
(1)urllib2
urllib2是python的一个获取url(Uniform Resource Locators,统一资源定址器)的模块。它用urlopen函数的形式提供了一个非常简洁的接口。这使得用各种各样的协议获取url成为可能。
注意,urllib 和urllib2(python3已经合并成一个了)都是接受URL请求的相关模块,但是提供了不同的功能。因此urllib也常和urllib2一起使用。
urlopen
下面是一个最简单的urllib2的应用:
上面这四行代码将我们访问百度时浏览器收到的代码们全部打印了出来。我们可以用浏览器打开百度主页,右击,选择查看源代码,会发现也是完全一样的内容:
除了"http:",URL同样可以使用"ftp:","file:"等等来替代。
HTTP是基于请求和应答机制的:客户端提出请求,服务端提供应答。urllib2用一个Request对象来映射你提出的HTTP请求。通过调用urlopen并传入Request对象,将返回
一个相关请求response对象,这个应答对象如同一个文件对象,所以你可以在Response
中调用.read()。下面的几行命令和上面命令的效果是一样的:
在下面我们会看到,当需要POST数据,或者说设置Header信息时,连接代理服务器,就需要使用Request()方法了。
发送表单数据
有时你想向一个URL发送数据(post)。当你发送一个你在网上填的form(表单)时,这通常是你的浏
览器所做的。并不是所有的Post请求都来自HTML表单,这些数据需要被以标准的方式encode,然后作为一个数据参数传送给Request对象。Encoding是在urllib中完成的,而不是在urllib2中完成的。所以这时需要同时导入urllib。
这种方法常常运用在网站访问需要登陆的情况。我们来看一个例子:
1)用python模拟登陆山东大学的成绩查询网站:
首先,我们需要知道时post了什么数据。我们通过浏览器插件监视post的数据:先来到登录页面,把httpfox打开,clear之后,点击start开启检测。然后,输入个人信息,确保httpfox处于开启状态,然后点击确定提交信息,实现登录。