如何在Instagram上刮of主题标签的所有帖子

时间:2020-02-08 08:25:38

标签: web-scraping scrapy instagram

我想删除所有包含来自Instagram的#hashtag的帖子

我从尝试过: https://www.instagram.com/explore/tags/perfume/?__a=1

但是它只给出一些帖子,而不是每个帖子。

2 个答案:

答案 0 :(得分:0)

您可以使用此库https://github.com/postaddictme/instagram-php-scraper/blob/master/examples/getMediasByTag.php

该函数需要多种媒体作为参数,因此,如果要恢复井号的所有媒体,则必须在JSON供稿器上获取“ graphql-> hashtag-> edge_hashtag_to_media-> count”的值{ {3}}

答案 1 :(得分:0)

仔细查看您收到的json。

导航到graphql -> hashtag -> edge_hashtag_to_media -> page_info -> end_cursor

这是用于指定下一批媒体的标识符,如下所示:

https://www.instagram.com/explore/tags/perfume/?__a=1&max_id=QVFDNWJDZnpGbElpdEV5Q19aaldYWUsxZnc1YUd0Z21yNUZsOWw4V2NxX05ZWnZjT2pRb3lrY29ocDJnM0VNallUWGZVeDIxVURnUzltdHpBR1A1a0VRNw==

您可以重复此过程以获取更多媒体用于请求的主题标签。

一个朴素的示例,请求(python3)提取前10个批次。

import requests
import json
from time import sleep

max_id = ''

base_url = "https://www.instagram.com/explore/tags/perfume/?__a=1"
for i in range(0, 10):
    sleep(2) # Be polite.

    if max_id:
        url = base_url + f"&max_id={max_id}"
    else:
        url = base_url

    print(f"Requesting {url}")
    response = requests.get(url)
    response = json.loads(response.text)
    try:
        max_id = response['graphql']['hashtag']['edge_hashtag_to_media']['page_info']['end_cursor']
        print(f"New cursor is {max_id}")
    except KeyError:
        print("There's no next page!")
        break

正如评论中所说,要有礼貌。如果您每秒拍摄太多请求,Instagram将阻止您。

相关问题