多语言展示
当前在线:500今日阅读:31今日分享:25

如何爬取泛见志里面的段子内容

本片文章主要是python初学者的一个小爬虫,并对内容进行了封装,简单易懂,跟着步骤就能获得网站段子模块的所有的段子内容了
工具/原料
1

泛见志网站

2

pycharm工具和python环境

导入模块
类的开始
1

class FJZSpider(object):

2

#设置一个标识头列表   user_agent_list = ['Mozilla/5.0(Windows;U;WindowsNT6.1;en-us)AppleWebKit/534.50(KHTML,likeGecko)Version/5.1Safari/534.50','Mozilla/5.0Macintosh;IntelMacOSX10.6;rv:2.0.1)Gecko/20100101Firefox/4.0.1','Mozilla/5.0(Macintosh;IntelMacOSX10_7_0)AppleWebKit/535.11(KHTML,likeGecko)Chrome/17.0.963.56Safari/535.11']

3

# 设置一个代理IP列表   ip_list = [{'http': 'http://121.31.100.29:8123'}, {'http': 'http://219.141.153.41:80'},{'http': 'http://121.31.100.29:8123'}]

写方法了
1

基础方法,定义属性def __init__(self):   #设置一个基础网址    self.base_url='http://www.fanjian.net/duanzi'   #设置请求头    self.headers={'User-Agent':random.choice(self.user_agent_list)}   #设置ip   self.ip=random.choice(self.ip_list)   #声明一个列表,用于存储所有用户信息的字典    self.big_list=[]

2

#获取网页的总页数方法def get_total_page_num(self):    #创建requsest对象    request=urllib.request.Request(self.base_url,headers=self.headers)    #创建ip代理对象    ip_proxyhandler=ProxyHandler(self.ip)    #根据IP代理对象创建opener对象    opener=build_opener(ip_proxyhandler)    #将opener对象设置为全局的,让整个文件都可以使用opener对象    urllib.request.install_opener(opener)    #再使用urllib.request.urlopen打开一个网址的时候,就相当于使用了opener对象在打开网址    response=urllib.request.urlopen(request).read().decode('utf-8')    pattern_obj=re.compile(r'共(.*?)页',re.S)    total_num=int(re.search(pattern_obj,response)[1])    self.get_detail_info(total_num)

3

#定义一个函数来获取每一页的详细信息def get_detail_info(self,total_num):    for page in range(1,total_num+1):        print('正在爬取第{}页数据......'.format(page))        abs_url=self.base_url+'-'+str(page)        request=urllib.request.Request(url=abs_url,headers=self.headers)        response=urllib.request.urlopen(request).read().decode('utf-8')        pattern_obj=re.compile(r'(.*?).*?

(.*?)

.*?(.*?).*?浏览.*?(.*?).*?时间.*?(.*?)',re.S)        result_list=re.findall(pattern_obj,response)        self.change_to_json(result_list)

4

#定义一个函数来处理匹配到的result_listdef change_to_json(self,result_list):    for nick_name,content,tu_cao,look_num,publish_time in result_list:        #将每一个用户的信息存储为一个字典        dict_info={'用户昵称':nick_name,'段子内容':content,'吐槽':tu_cao,'浏览量':look_num,'发表时间':publish_time}        #将用户信息字典存储到列表当中        self.big_list.append(dict_info)

5

#定义一个函数来存储数据def save_to_json(self):    #将用户信息这个大的列表序列化成字符串存储在文件当中。    result_string=json.dumps(self.big_list)    f=open('泛见志.txt','w',encoding='utf-8')    f.write(result_string)    f.close()

6

#定义一个开始函数,让爬虫启动起来def start_spider(self):    self.get_total_page_num()    self.save_to_json()

启动
1

if __name__ == '__main__':    fjz=FJZSpider()    fjz.start_spider()    fjz.start_spider()

2

所有内容都写完了,图片是参照的格式,一定要把空格空好,和对齐,一起运行看看

查看文件
1

当然,保存的文件是json型的,直接查看会你是看不懂得,看得到真的怀疑你是终结者了,下面从新创建一个.py文件,写入:import jsonf=open('泛见志.txt','r',encoding='utf-8')res=json.loads(f.read())print(res)

2

运行json文件,查看段子内容吧

注意事项

当然还有很多方法,这个是保存json文件再查看,还有可以直接查看的的,欢迎学习python

推荐信息