python语言-实现半自动爬虫爬取小说《遮天》评论

半自动爬虫-新手

	作业要求:百度贴吧中寻找一个自己喜欢的贴吧,将其中的一片热门帖子的每一层楼的发帖人、发帖内容和发帖时间抓取下来

需要准备的是,能够理解正则表达式的运用,基础的python语法就可以很快搞定,python语言和大多数java、c只要些许的不同,间隔需把握好,工具下面采用sublime text3/IDEL。

第一步:找到自己喜欢的贴吧的源元素,另存为.txt文件
第二步:文件操作
			with open('xxx文件名') as fr:   
			     fr.read()

f是一个文件对象,我们用它来对文件进行读的操作。
读取文件的内容,下面就是想办法把我们想看到的信息分离出来

第三步:只获取想看到的信息

引入re 模块,因为python语言是不能理解正则表达式的,所以需要有一个中间人,帮它翻译。

		searchAuthor = re.findall(r'=pb" target="_blank">(.*?)<',fr)
        searchDate = re.findall(r'tail-info">(.*?) (.*?)

因为我所截取的信息前后是这样的,所以每个网页获取的信息 正则表达式会不一样,需要大家仔细观察。

第四步:按照作者、时间、内容一一对应打印出来

因为.findall(r’’,string)方法返回的是一个列表[],访问时可以直接使用下标,用for语句控制循环,回帖作者数与时间内容数是一致的,所以就直接使用作者数。为什么时间的标签和其他不一致,是因为我发现使用正则表达式获取的时间包含了"来自"“楼层”"时间"而且他们之间没有区别,所以根据列表中时间位置的规律,用j来控制它的下标

length = len(searchAuthor)

j = 2
for i in range(length):
        print("作者:"+searchAuthor[i] + '  ')
        print("时间:"+searchDate[j] + '  ')
        print("内容:"+searchCon[i])
        print()
        j += 3

运行结果:

python语言-实现半自动爬虫爬取小说《遮天》评论_第1张图片##### 所有代码:

import re
with open('zt.txt',encoding='utf-8') as f:
        fr = f.read()
        searchAuthor = re.findall(r'=pb" target="_blank">(.*?)<',fr)
        searchDate = re.findall(r'tail-info">(.*?) (.*?)

像半自动爬虫只是增加对正则表达式的理解和运用,如果想获取更大量的信息,还需要继续努力。
再说说正则表达式中的(.)与(.?)的区别,前者获取的是满足条件的最长字符串,一种贪婪模式;
后者是获取满足条件的最短字符串,非贪婪模式。
例如:

string=“我的微博密码是:1234567,QQ密码是:33445566,银行卡密码是:888888,Github密码是:999abc999,帮我记住它们。”
Pattern1=“密码是:(.*),”    Pattern2=“密码是:(.*?),”
re.findall(‘Pattern1’,string)
re.findall(‘Pattern2’,string)

第一个结果为[‘1234567,QQ密码是:33445566, 银行卡密码是:888888,Github密码是:999abc999’]
第二个结果为[‘1234567’,‘33445566’,‘888888’,‘999abc999’]

你可能感兴趣的:(python)