使用Python3.x的版本 对http://tieba.baidu.com/p/2005436135,该百度贴吧帖子进行爬取操作。
一.使用到的库。
1. urllib.request :对链接进行解析,以及图片的保存
参考资料:http://www.jb51.net/article/42630.htm
http://www.cnblogs.com/Lands-ljk/p/5447127.html
2. re :正则表达式的处理模块
参考资料:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html
3. os :文件的操作模块
参考资料:http://developer.51cto.com/art/201003/186045.htm
二.对帖子链接的分析。
该帖子是对部分美剧的分析和推荐。
原始链接为:http://tieba.baidu.com/p/2005436135
如果只看楼主的话会变成:http://tieba.baidu.com/p/2005436135?see_lz=1
如果选择第几页的话变成:http://tieba.baidu.com/p/2005436135?see_lz=1&pn=2
可以看出:?see_lz=1是选择只看楼主,?see_lz=0,取消只看楼主,&pn=x , x就是第几页。
三.使用urllib.request模块获取到网页源码。
1.urllib.request.open() 可以直接使用Url作为参数,或者一个Request对象作为参数。
在此使用Request对象作为参数。
request = urllib.request.Request(Url)
response = urllib.request.urlopen(request)
response.read().decode('utf-8')
四.构造方法,得到网页源码。
根据需求可分为只看楼主或者不只看楼主,根据输入的链接Url,是否只看楼主SeeLZ,开始的页数Num,做参数,得到如下代码。
def getPage(self,Url,SeeLZ,Num):
if(SeeLZ == 1):
Url = Url.strip() + '?see_lz=1' + '&pn=' + str(Num) # strip()去掉字符串左右两边的空格
if(SeeLZ == 0):
Url = Url.strip() + '?see_lz=0' + '&pn=' + str(Num)