为了账号安全,请及时绑定邮箱和手机立即绑定

如何为 subreddit 构建网页抓取功能?

如何为 subreddit 构建网页抓取功能?

杨__羊羊 2022-07-12 10:11:45
摘要:我想在网上抓取 subreddit,然后将数据转换为数据帧。我知道如何单独做。但我坚持使用一个函数。这是我一一做的。url = 'https://api.pushshift.io/reddit/search/submission'params3 = {'subreddit':'Apple', 'size': 500,'before':1579411194}res3 = requests.get(url, params3)data = res3.json()post3 = data['data']apdf3 = pd.DataFrame(post3)这是我到目前为止提出的功能:url = 'https://api.pushshift.io/reddit/search/submission'def webscrape (subreddit, size,):    for i in range(1, 11):        params = {"subreddit":subreddit, 'size':size, 'before': f'post{i}'[-1]['created_utc']}        res = requests.get(url, params)        f'data{i}' = res.json()        f'post{i}' = data[f'data{i}']        f'ap_df{i}' = pd.DataFrame(f'post{i})我的问题是我的第一个参数不需要“之前”。但是在创建“帖子”之后,我需要使用“之前”来获取早于上一个操作的最后一个帖子的所有帖子。我该如何调和这种冲突?非常感谢!
查看完整描述

1 回答

?
米脂

TA贡献1836条经验 获得超3个赞

你要求的是可行的,但我认为 f-strings 在这里不起作用。下面的代码将每个数据帧附加到数据帧字典。试试看它是否有效:


d = {}

url = 'https://api.pushshift.io/reddit/search/submission'

def webscraper (subreddit, size,):

    bef = 0 

    for i in range(1, 11):

        if i==1:

            params = {"subreddit":subreddit, 'size':size}

        else:

            params = {"subreddit":subreddit, 'size':size, 'before': bef}

        res = requests.get(url, params)    

        data = res.json()  

        dat = data['data']

        bef = dat[-1]['created_utc']

        df_name = subreddit+str(i)

        d[df_name] = pd.DataFrame(dat)


查看完整回答
反对 回复 2022-07-12
  • 1 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号