使用Python和网络软管.io将web数据爬网到子窗体

2024-04-28 05:35:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手。我要做的是使用网络软管.io将web数据爬网到Json格式的API。每个查询将给我5个帖子/文章。我正在为数据集获取1000篇文章。在

Webhose是免费注册的,每月会免费给你1000个请求,所以这应该足够获取数据集了。在

我现在的代码是这样的:

import webhoseio, json, io

webhoseio.config(token="YOUR API KEY")

query_params = {
"q": "organization:Amazon",
"sort": "crawled"
}

results = webhoseio.query("filterWebContent", query_params)

print(len(results))

with open('dataset.txt','w', encoding='utf8') as outfile:
output = json.dumps(results,
                    indent=4, sort_keys=True,
                    separators=(',', ': '), ensure_ascii=False)

outfile.write(output)
#output = json.load(outfile)
results = webhoseio.get_next()
output += json.dumps(results,
                    indent=4, sort_keys=True,
                    separators=(',', ': '), ensure_ascii=False)
outfile.write(output)

每次我运行代码时,看起来我只使用了一个请求。我不知道我收到了多少文章。有没有办法修改代码,这样我就可以得到1000篇文章(每个请求5篇文章,需要200个请求),还有没有办法更改Webhose中的爬网日期,这样200个请求就不会给我相同的文章了。在

谢谢你


Tags: 数据代码ioapijsonoutput文章params
1条回答
网友
1楼 · 发布于 2024-04-28 05:35:20

查询的前100篇文章的内容(文章、元数据)存储在results['posts']中。因此,当您调用len(results['posts'])时,您应该得到一个100(假设您的查询至少产生100个结果) 要获得下100个结果,您应该调用webhoseio.get_next()。 为了得到所有的批次,你可以做一些

output = [] 
while True:
    temp = webhoseio.get_next()
    output = output+temp['posts']
    if temp['moreResultsAvailable'] <= 0:
        break

相关问题 更多 >