python - 如何为 subreddit 构建网页抓取功能?
问题描述
摘要:我想在网上抓取 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})
我的问题是我的第一个参数不需要“之前”。但是在创建“帖子”之后,我需要使用“之前”来获取早于上一个操作的最后一个帖子的所有帖子。我该如何调和这种冲突?
非常感谢!
解决方案
你要求的是可行的,但我认为 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)
推荐阅读
- c# - 事件的C#实现
- visual-studio - 在 Visual Studio 代码中格式化液体(Shopify)代码
- node.js - 节点肥皂 ClientSSLSecurityPFX - 403 禁止
- php - codeigniter 中的电子邮件概念
- c# - 使用 C# 导出到 Excel 时,Excel 将日期列视为一般
- android - 如何在android studio中使用android P
- javascript - 如何解决 $write.val is not a function 的错误?
- java - 将错误视为“对象不是声明类的实例”
- casting - 为什么从对 c_void 指针的引用进行强制转换需要双重强制转换?
- javascript - 删除选择的直接父节点 ( )