使用请求模块进行网页抓取

哈尼夫

我想从一个网站中提取评论,使用此代码我成功地提取了评论。

import requests
from urllib.parse import unquote

url = 'https://apicomment.detik.com/graphql'
payload = {"query":"query search($type: String!, $size: Int!,$anchor: Int!, $sort: String!, $adsLabelKanal: String, $adsEnv: String, $query: [ElasticSearchAggregation]) {\nsearch(type: $type, size: $size,page: $anchor, sort: $sort,adsLabelKanal: $adsLabelKanal, adsEnv: $adsEnv, query: $query){\npaging sorting counter counterparent profile hits {\nposisi hasAds results {\n id author content like prokontra  status news create_date pilihanredaksi refer liker { id } reporter { id status_report } child { id child parent author content like prokontra status create_date pilihanredaksi refer liker { id } reporter { id status_report } authorRefer } } } }}","variables":{"type":"comment","sort":"newest","size":10,"anchor":1,"query":[{"name":"news.artikel","terms":5307853},{"name":"news.site","terms":"dtk"}],"adsLabelKanal":"detik_finance","adsEnv":"desktop"}}

while True:
    r = requests.post(url,json=payload)
    container = r.json()['data']['search']['hits']['results']
    if not container:
        break
    else:
        for item in container:
            if not len(item['author']):continue
            print(item['author']['name'],unquote(item['content']))

    payload['variables']['anchor']+=1

但是,实际上我不是很了解此代码,尤其是这一行。

url = 'https://apicomment.detik.com/graphql'
payload = {"query":"query search($type: String!, $size: Int!,$anchor: Int!, $sort: String!, $adsLabelKanal: String, $adsEnv: String, $query: [ElasticSearchAggregation]) {\nsearch(type: $type, size: $size,page: $anchor, sort: $sort,adsLabelKanal: $adsLabelKanal, adsEnv: $adsEnv, query: $query){\npaging sorting counter counterparent profile hits {\nposisi hasAds results {\n id author content like prokontra  status news create_date pilihanredaksi refer liker { id } reporter { id status_report } child { id child parent author content like prokontra status create_date pilihanredaksi refer liker { id } reporter { id status_report } authorRefer } } } }}","variables":{"type":"comment","sort":"newest","size":10,"anchor":1,"query":[{"name":"news.artikel","terms":5307853},{"name":"news.site","terms":"dtk"}],"adsLabelKanal":"detik_finance","adsEnv":"desktop"}}

网址不同。但是,输出正是我真正想要的。有人可以向我解释一下并给我一些参考吗?

wuerfelfreak

URL不同,因为它不是您要从中提取评论的网站本身,而是一个comment-api。该api提供了一种简单的搜索评论的方法,而无需对网站进行反向工程。

工资是您如何告诉api您要查找的内容。大概有一些文档说明了如何针对此确切的api格式化有效载荷。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用R进行网页抓取

来自分类Dev

使用PhantomJS进行网页抓取

来自分类Dev

使用SED进行网页抓取

来自分类Dev

使用R进行网页抓取

来自分类Dev

使用Python进行网页抓取

来自分类Dev

使用Rcurl进行网页抓取

来自分类Dev

使用PhantomJS进行网页抓取

来自分类Dev

使用python请求从网页上抓取数据

来自分类Dev

使用Google Apps脚本进行网页抓取

来自分类Dev

使用python在Android上进行网页抓取

来自分类Dev

使用python从.aspx网站进行网页抓取

来自分类Dev

使用python3进行网页抓取

来自分类Dev

使用python在Android上进行网页抓取

来自分类Dev

使用 BeautifulSoup FindAll 进行网页抓取

来自分类Dev

如何使用 BeautifulSoup 进行网页抓取

来自分类Dev

使用 Python 进行 Tripadvisor 网页抓取

来自分类Dev

使用 BeautifulSoup 进行网页抓取 -- Python

来自分类Dev

使用 Python BeautifulSoup 进行网页抓取

来自分类Dev

使用请求模块抓取Node.js

来自分类Dev

无法使用请求从网页中抓取某些字段

来自分类Dev

无法使用请求从网页中抓取名称

来自分类Dev

使用请求进行网页搜集-Python

来自分类Dev

使用美丽的汤进行网页抓取可产生多种结果

来自分类Dev

使用Beautifulsoup进行网页抓取,带来了不同的内容

来自分类Dev

使用BeautifuSoup和网址重定向错误进行网页抓取?

来自分类Dev

使用F#进行网页抓取股票股息数据

来自分类Dev

通过使用循环进行网页抓取来创建表格

来自分类Dev

关于使用Google表格进行网页抓取的指南

来自分类Dev

使用Google表格进行网页抓取。Importxml函数xpath校正