您的位置:首页 > 编程语言 > Python开发

python爬虫百度贴吧标题数据

2015-07-28 00:45 309 查看
-#python爬虫百度贴吧标题

一 、Requests安装

使用pip命令进行安装

windows :pip install requests

mac os x/linux:sudo pip install requests

强调说明下第二种:默认情况下,mac下没有安装pip,所以需要我们自己进行安装,在终端下使用命令:sudo easy_install pip

很多人同样使用sudo easy_install requests进行安装,但是我不推荐,因为使用easy_install无法进行卸载。

OK,接下来继续进行。在这里我使用的IDE是PyCharmCE,在mac下自带的Python版本过低,无使用我们引入的requests,所以需要进行下载。进入Python官网https://www.python.org/downloads/进行对应版本的下载。

那么现在进行requests的安装,在终端下输入sudo pip install requests,提示成功安装后,在/Library/Python/2.7/site-packages发现Requests文件夹,但是此时你使用 import requests语句会提示“ImportError: No module named requests”错误,所以此时你需要更改Project Interpreter 选择 File -> Settings ->Project-> Single-thread-crawler ->Project Interpreter

如图1所示:



那么以上步骤完成后,python爬虫所需要的requests构建完成。

二、使用Requests获取网页的源代码

两种方式:

直接获取源代码

更改Http头获取源代码(反爬虫机制)

首先我们需要先获取源代码,代码如下

#-*-coding:utf-8-*-
import requests

#下面三行是编码转换的功能,大家现在不用关心。
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

html = requests.get('http://tieba.baidu.com/f?kw=大连理工大学城市学院&ie=utf-8&pn=0')
print html.text


(此网页不需要更改头就可以获取,并不是所有的网站用这几行就可以提取的,有的网站需要我们更改头,把程序伪装成浏览器进行访问,下一篇关于python爬虫的文章将会讲解更改头的获取方法)

Python的默认编码文件是用的ASCII码,你将文件存成了UTF-8也没用,解决办法很简单

只要在文件开头加入 # -- coding: UTF-8 -- 或者 #coding=utf-8 就行了。

运行代码将会获取百度贴吧的html标题

三、使用正则表达式提取每个帖子的标题



观察源码你可以发现规律,每一个标题的都在”class=”j_th_tit “>**< a>”之间

既然观察出如下规律,我们就可以设计出相应的代码

#-*-coding:utf8-*-

import requests
import re

#下面三行是编码转换的功能,大家现在不用关心。
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

html = requests.get('http://tieba.baidu.com/f?kw=大连理工大学城市学院&ie=utf-8&pn=0')

html.encoding = 'utf-8' #将编码转为utf-8FA防止中文乱码。

title = re.findall('class="j_th_tit ">(.*?)</a>',html.text,re.S)

for TITLE in title:
    print TITLE


执行结果:



在这里我们讲解下re.findall(‘class=”j_th_tit “>(.*?)’,html.text,re.S)

我们使用re.findall来进行数据匹对,根据规律设计出 class=”j _ th_tit “>(.?)< /a> ,其中(. ?)代表的意思是非贪心算法:各个排查

以上就是一个简单的 爬虫百度贴吧标题的程序,明天将会更新一篇关于更改Http 头获取源码,并且获取多页内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: