首先观察网页:
https://tieba.baidu.com/f?kw=%E5%BF%83%E7%90%86%E5%AD%A6&ie=utf-8&pn=50
只需要改变pn的值就能获取到网页,通过网页源代码来获取对应的想要数据
代码:
# 导入需要的包 import time # 模拟http请求 和 解析内容 的包 import requests from bs4 import BeautifulSoup # 数据展示 的包 import numpy as np import pandas as pd # 设置点击量阈值 M = 3000 # get请求模版 template_url = "https://tieba.baidu.com/f?kw=%E5%BF%83%E7%90%86%E5%AD%A6&ie=utf-8&pn={}" # 从一页中提取 帖子 def extra_from_one_page(page_lst): '''从一页中提取 帖子''' # 临时列表保存字典数据,每一个帖子都是一个字典数据 tmp = [] for i in page_lst: titie=i.find(class_='j_th_tit').text dic={} dic['title']=titie tmp.append(dic) return tmp # 爬取n页的数据 def search_n_pages(n): '''爬取n页数据''' target = [] # 发起n次的get请求 for i in range(n): # 跟踪进度 print('page:', i) # 按照浏览贴吧的自然行为,每一页50条 target_url = template_url.format(50*i) res = requests.get(target_url) # 转为 bs 对象 soup = BeautifulSoup(res.text, 'html.parser') # print(soup) # 获取该页帖子列表 page_lst = soup.find_all(class_='j_thread_list') print(page_lst) # 该页信息保存到target target.extend(extra_from_one_page(page_lst)) # 休息0.2秒再访问,友好型爬虫 time.sleep(0.2) return target # 爬取贴吧前10页数据 d = search_n_pages(10) # 转化为pandas.DataFrame对象 data = pd.DataFrame(d) # 导出到excel表格 # data.to_excel('心理学贴吧.xlsx') pd.DataFrame(data).to_csv('贴吧爬取.csv', encoding='utf-8')
接下来就可以整理数据:
代码: