- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
随着对当前 Instagram API 的所有更改,我试图构建一个抓取工具。环顾四周后,我发现了 puppeteer。虽然这看起来很简单,但我遇到了一个我似乎无法解决的问题。
问题如下:我知道帖子的 div 标签是什么 (.v1Nh3.kIKUG._bz0w)
以及如何调用它 (elements = await page.$$('.v1Nh3.kIKUG._bz0w ');)
如果我正确理解 $ 函数,这应该会返回一个包含“页面”上所有帖子的数组的 promise 。
我的第一个问题是这个假设是否正确,第二个问题是如何从中取出数组。 (如果一切正常,如何获取子 href 中包含的重定向 URL)
最佳答案
首先要注意的是:由于 Instagram 是一个重 javascript 驱动的 React 应用程序,您所选择的选择器在页面加载后可能无法立即使用。所以我们应该等待它们出现在 DOM 中:
await page.waitForSelector('.v1Nh3.kIKUG._bz0w');
现在使用 page.evaluate 我们得到了帖子,但是由于您只想要这些帖子中的链接,所以让我们在查询中立即获取它们:
const result = await page.evaluate(() => {
// Get elements into a NodeList
const elements = document.querySelectorAll('.v1Nh3.kIKUG._bz0w a');
...
}
但是我们不能将元素从 Nodelist 转换为 Array 并直接返回它们,因为它们仍然是 DOM Node ,复杂的不可序列化对象,它们需要是 serializable能够从 page.evaluate
返回。因此,我们不会返回完整的 Node ,而只会得到我们需要的:来自 href 属性的 urls:
const result = await page.evaluate(() => {
// Get elements into a NodeList
const elements = document.querySelectorAll('.v1Nh3.kIKUG._bz0w a');
// Convert elements to an array,
// then for each item of that array only return the href attribute
const linksArr = Array.from(elements).map(link => link.href);
return linksArr;
});
其他方法
在您的问题中,您提到了 page.$$
方法。它确实适用于获取我们寻找的对象的句柄。但是迭代它们的代码并不漂亮:
const results = await page.$$('.v1Nh3.kIKUG._bz0w a')
for (const i in results)
{
console.log(await(await(await results[i]).getProperty("href")).jsonValue());
}
我最喜欢的获取这些链接的方法是使用 page.$$eval
方法:
const results = await page.$$eval('.v1Nh3.kIKUG._bz0w a', links => links.map(link => link.href))
它与我们在 page.evaluate
解决方案中所做的完全相同,但方式更加简洁。
关于javascript - 如何使用 puppeteer(Node.js 应用程序)抓取 instagram 帖子 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58429471/
我想获取该用户所关注的 Instagram 用户列表。(但不是为我自己,为另一个用户)。 我做 API 调用 GET https://api.instagram.com/v1/users/423423
我提到过这个问题Instagram API: The access_token provided is invalid ,在我自己发布这个问题之前。 我的情况非常相似,我昨天刚刚注册了一个新应用程序,
Instagram 宣布弃用 Instagram 平台 API: “为了不断提高 Instagram 用户的隐私和安全,我们正在加速弃用 Instagram API 平台” 他们的文档和变更日志表示要
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 3 年前。 Improve
我正在发送多条 Instagram 直接消息,并希望预先填充在我和我的关注者之间打开直接消息的 URL。我有每个粉丝的 Instagram ID 和用户名。 目前,Instagram 的“收件箱”地址
我正在做一个 Instagram 应用程序。首先想使用 Instagram 的端点。但是很多功能都被关闭了。用户搜索、关注者、关注列表等。 Instagram 宣布将于 7 月 31 日关闭许多 En
- (IBAction)postToInstagram:(id)sender { NSURL *instagramURL = [NSURL URLWithString:@"instagram://ap
我正在尝试创建一个程序,从 Instagram 帐户中检索喜欢、评论等的总数,不一定是评论的内容等,而只是给出特定帐户的喜欢和评论总数。这可能使用 Instagram API 吗? 最佳答案 所以我一
目前我使用 /users/self/media/liked方法,获取响应,阅读 next_max_like_id并一次又一次地请求数据。我试图通过巨大的 count值,但看起来最大计数值只是 30 .
我阅读了 instargam API 并在谷歌中搜索了代码,但没有得到满足我要求的任何确切解决方案。我想像 Facebook 插件一样在我的网站上显示我最近的照片。我的图像看起来像 - 我尝试了以下
我只是想知道是否有办法在 instagram 上获取用户的性别......我浏览了 instagram 的 api 并且从 users/userId 获得的用户信息不包括性别信息。 谢谢你的帮助。 最
假设我有一个 Instagram 帐户和一个网站。我想在网站上显示来自我的 Instagram 帐户的最新照片。我在文档中不清楚的东西:为了得到我的 access_token我需要验证自己的身份吗?我
我正在使用以下查询https://www.instagram.com/graphql/query/?query_id=17851374694183129&id={acountId}&first=100
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我试图让我的应用程序能够使用除基本权限之外的其他范围,但是当我尝试使用其他范围时,我收到以下错误: Something went wrong :(stdClass Object ( [meta] =>
我正在尝试注册新 Client ID在 Instagram 上,用于提供 API。 但是不知道怎么填Privacy Policy URL .请指导我。 最佳答案 这是格式 @ http://www.g
我有一个显示我的 Instagram 动态的网站。以前我在用Instagram 遵循 API。用户/ self /媒体/最近 此 API 使用我生成一次的访问 token ,并在我的代码中作为变量保存
最近 Instagram 宣布支持多张照片发布。 我尝试使用端点,GET /media/media-id ,但响应只有一张图像的信息。 任何人都可以使用他们的 API 从单个多张照片帖子中检索所有图像
我想检查 Instagram 用户名是否以“正确”的方式可用。目前我正在做的是打开想要的用户名他们的 instagram 页面并检查状态代码是否为 404。但这会带来一个问题,因为如果名称的前一个所有
我正在考虑使用 insta API 的项目,但是当我注册 instagramdeveloper 帐户时,我遇到了一些问题。我找不到创建新客户端的按钮,当我点击管理客户端按钮时,这就是我得到的: 当我点
我是一名优秀的程序员,十分优秀!