爬取Instagram霉霉的关注者(Json方式)

Instagram关注者爬虫实战


由于Instagram是一个动态网站,所以我利用Json来爬取我想要的信息。

利用Chrome的开发者工具Network选项中找到了以?query为开头的文件,这是一个Json格式的文件。


如何进行解析呢?其实里面的'end_cursor'就是通往下一页好友列表的一个密钥,而该页下关注者的信息在node下面。

废话不多说,直接上代码。


#coding:utf-8
import simplejson
from bs4 import BeautifulSoup
import requests
import time
from multiprocessing import Pool

###载入json,读取json中的end_corsor,即为下一页的标致。然后用其替换jason的LinkAdress。
headers = {"user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36",
           "cookie":"mid=WVR6LgAEAAErsKhZPudqXWAngh6j; sessionid=IGSC57d73fa3ccf2201c703d81d9c0b9d4d3bb458c1602e61cb3d7df2bbe67047528%3AJg91xL101zJVIqP9UwfUNDJumcZVWeOf%3A%7B%22_auth_user_id%22%3A1629140917%2C%22_auth_user_backend%22%3A%22accounts.backends.CaseInsensitiveModelBackend%22%2C%22_auth_user_hash%22%3A%
要使用 Python 爬取 Instagram 图片,可以采用以下几种方法: ### 方法一:通过分析 Instagram 接口获取图片链接 Instagram 网页版和移动端的图片数据通常通过其内部接口返回。可以通过浏览器的开发者工具分析网络请求,找到返回图片链接的接口,然后通过 Python 发送请求获取数据。这种方法需要处理 JSON 数据,并提取其中的图片 URL。通常使用的库包括 `requests` 和 `BeautifulSoup`。 示例代码如下: ```python import requests import json # 替换为实际的 Instagram 用户页面 GraphQL 查询接口 url = "https://www.instagram.com/graphql/query/" # 请求参数 params = { 'query_hash': 'your_query_hash', # 替换为实际的 query_hash 'variables': json.dumps({'id': 'user_id', 'first': 50}) # 替换为实际的用户 ID } # 发送请求 response = requests.get(url, params=params) data = response.json() # 提取图片链接 edges = data['data']['user']['edge_owner_to_timeline_media']['edges'] for edge in edges: node = edge['node'] display_url = node['display_url'] # 获取图片链接 print(display_url) ``` 此方法需要注意反爬虫机制,例如 IP 封禁和请求频率限制。可以通过设置 `headers` 模拟浏览器请求,并使用代理 IP 来降低被封禁的风险 [^2]。 ### 方法二:使用 Instagram Graph API Instagram 提供了官方的 Graph API,可以通过 Python 调用该 API 获取用户发布的图片。使用 Graph API 需要注册 Facebook 开发者账号,并创建应用以获取访问令牌(Access Token)。 示例代码如下: ```python import requests # 替换为实际的访问令牌和用户 ID access_token = "your_access_token" user_id = "your_user_id" # 构建请求 URL url = f"https://graph.instagram.com/{user_id}/media?access_token={access_token}&fields=id,media_url" # 发送请求 response = requests.get(url) data = response.json() # 提取图片链接 for item in data['data']: media_url = item['media_url'] print(media_url) ``` 此方法的优势在于稳定性较高,适合长期使用,但需要处理 OAuth 认证流程 [^3]。 ### 方法三:使用爬虫抓取网页内容 对于简单的网页版 Instagram 页面,可以直接使用爬虫抓取网页内容,并通过正则表达式或 `BeautifulSoup` 提取图片链接。此方法适用于不需要登录或不需要处理复杂接口的场景。 示例代码如下: ```python import requests from bs4 import BeautifulSoup import re # 替换为实际的 Instagram 用户页面 URL url = "https://www.instagram.com/username/" # 发送请求 response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 使用正则表达式提取图片链接 image_urls = re.findall(r'"display_url":\s*"(.*?)"', str(soup)) for image_url in image_urls: print(image_url) ``` 此方法容易受到 Instagram 网站结构变化的影响,且需要处理 JavaScript 渲染的内容 [^1]。 ### 方法四:结合 OCR 技术识别图片内容 如果需要进一步处理图片内容,例如将图片中的文字提取出来,可以使用 `pytesseract` 和 `PIL` 库进行 OCR 识别。 示例代码如下: ```python from PIL import Image import pytesseract # 加载图片 image = Image.open("instagram_image.png") # 使用 pytesseract 进行 OCR 识别 text = pytesseract.image_to_string(image) print(text) ``` 此方法适用于对图片内容进行分析的场景 [^4]。 ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值