python爬虫百度贴吧标题数据

来源:互联网 发布:淘宝查关键词排名 编辑:程序博客网 时间:2024/05/19 14:16

-#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所示:
图1

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

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

两种方式:

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

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

#-*-coding:utf-8-*-import requests#下面三行是编码转换的功能,大家现在不用关心。import sysreload(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 requestsimport re#下面三行是编码转换的功能,大家现在不用关心。import sysreload(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 头获取源码,并且获取多页内容

0 0