如何在 instagram 中抓取所有主题标签帖子

Ape*_*ari 1 scrapy web-scraping instagram

我想从 Instagram 上抓取所有包含 #hashtag 的帖子

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

但它只提供一些帖子而不是每个帖子。

Mil*_*vis 6

仔细看你收到的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
Run Code Online (Sandbox Code Playgroud)

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