<p>我刚刚读了<a href="https://www.diggernaut.com/blog/how-to-scrape-pages-infinite-scroll-extracting-data-from-instagram/#comment-215" rel="nofollow noreferrer">this article</a>并在标记页上应用了相同的过程,您肯定可以在任何其他页面上执行此操作。在</p>
<p>您可以检查浏览器上的每个请求(以及JavaScripts)以找到<code>query_hash</code>和{<cd2>}参数的来源。在</p>
<h2>当我们加载更多内容时,请求的URL是什么?在</h2>
<p>首先,让我们看看在加载更多内容时请求的URL是什么。您只需转到<a href="https://instagram.com/explore/tags/ruby" rel="nofollow noreferrer">https://instagram.com/explore/tags/ruby</a>,然后向下滚动,直到它在检查时加载另一个图像块。在</p>
<p>您将看到对以下URL的<code>GET</code>请求:</p>
<p><a href="https://www.instagram.com/graphql/query/?query_hash=1780c1b186e2c37de9f7da95ce41bb67&variables=%7B%22tag_name%22:%22ruby%22,%22first%22:12,%22after%22:%22AQAFSpwCDXVgp2pnTXf57MavtlZnwU4ptNnC6nRGtIs5C9erOWwzZkcfSiq812RlMqDLzKlCzsAx-b9sIsIm4X4REE1LbZeA5yok7yA2jGcJqg%22%7D" rel="nofollow noreferrer">https://www.instagram.com/graphql/query/?query_hash=1780c1b186e2c37de9f7da95ce41bb67&variables={"tag_name":"ruby","first":12,"after":"AQAFSpwCDXVgp2pnTXf57MavtlZnwU4ptNnC6nRGtIs5C9erOWwzZkcfSiq812RlMqDLzKlCzsAx-b9sIsIm4X4REE1LbZeA5yok7yA2jGcJqg"}</a></p>
<h2>我们需要知道什么才能进入下一页?在</h2>
<p>正如您在上面的链接中看到的,我们需要:</p>
<ol>
<li><code>query_hash</code></li>
<li><code>after</code></li>
</ol>
<p>我真的搞不懂<code>first</code>参数是如何工作的,但是如果您输入一个更大的值,但内容的数量不完全相同,它会加载更多的内容。在</p>
<h2>我们从哪里得到变量<code>after</code>和<code>query_hash</code>?在</h2>
<p>到目前为止还不错。如果我们知道<code>query_hash</code>和<code>after</code>变量,我们可以请求图像的下一页。在</p>
<p>您可以通过以下链接轻松访问标记页的第一个JSON文件:</p>
<p><code>https://www.instagram.com/explore/tags/yourtagname/?__a=1</code></p>
<p>我使用了<code>ruby</code>标记,因此我的标签是:</p>
<p><a href="https://www.instagram.com/explore/tags/ruby/?__a=1" rel="nofollow noreferrer">https://www.instagram.com/explore/tags/ruby/?__a=1</a></p>
<p>加载JSON文件后,可以看到一个名为<code>end_cursor</code>的变量。这是我们的<code>after</code>参数。在</p>
<p><a href="https://i.stack.imgur.com/4EI5n.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/4EI5n.png" alt="end_cursor variable preview"/></a></p>
<hr/>
<p>要获得<code>query_hash</code>参数,需要查看<code>.js</code>文件</p>
<p><a href="https://www.instagram.com/static/bundles/base/TagPageContainer.js/f1172b0dfea6.js" rel="nofollow noreferrer">https://www.instagram.com/static/bundles/base/TagPageContainer.js/f1172b0dfea6.js</a></p>
<p>然后您只需要搜索字符串<code>byTagName.get(t).pagination},queryId:"</code>,后面跟着您需要的<code>query_hash</code>。在</p>
<p>然后使用上面找到的变量将所有的部分组合在一起,然后浏览到我们的新链接以获得下一页的JSON文件。在</p>
<p><a href="https://www.instagram.com/graphql/query/?query_hash=1780c1b186e2c37de9f7da95ce41bb67&variables=%7B"tag_name":"ruby","first":9,"after":"AQDPE3V-ycMcCFjHv8Gq7MnR-x2hxNOI6WQGO8psxHsRWJo3pIDpR-qaKUITQGE3-dvEYYdG4ueWzSPLabVH7VOBZq4oWZYvsjswh2w622HwEQ"%7D" rel="nofollow noreferrer">https://www.instagram.com/graphql/query/?query_hash=1780c1b186e2c37de9f7da95ce41bb67&variables={"tag_name":"ruby","first":9,"after":"AQDPE3V-ycMcCFjHv8Gq7MnR-x2hxNOI6WQGO8psxHsRWJo3pIDpR-qaKUITQGE3-dvEYYdG4ueWzSPLabVH7VOBZq4oWZYvsjswh2w622HwEQ"}</a></p>