泛见志网站
pycharm工具和python环境
class FJZSpider(object):
#设置一个标识头列表 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']
# 设置一个代理IP列表 ip_list = [{'http': 'http://121.31.100.29:8123'}, {'http': 'http://219.141.153.41:80'},{'http': 'http://121.31.100.29:8123'}]
基础方法,定义属性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=[]
#获取网页的总页数方法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)
#定义一个函数来获取每一页的详细信息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' (.*?)
#定义一个函数来处理匹配到的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)
#定义一个函数来存储数据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()
#定义一个开始函数,让爬虫启动起来def start_spider(self): self.get_total_page_num() self.save_to_json()
if __name__ == '__main__': fjz=FJZSpider() fjz.start_spider() fjz.start_spider()
所有内容都写完了,图片是参照的格式,一定要把空格空好,和对齐,一起运行看看
当然,保存的文件是json型的,直接查看会你是看不懂得,看得到真的怀疑你是终结者了,下面从新创建一个.py文件,写入:import jsonf=open('泛见志.txt','r',encoding='utf-8')res=json.loads(f.read())print(res)
运行json文件,查看段子内容吧
当然还有很多方法,这个是保存json文件再查看,还有可以直接查看的的,欢迎学习python