爬取心理学贴吧的内容

 

首先观察网页:

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')

 接下来就可以整理数据:

代码:

 

posted @ 2019-05-08 21:43  代码是肥钦喔  阅读(205)  评论(0)    收藏  举报