如何在 Instagram 上向下滚动到末尾

Posted

技术标签:

【中文标题】如何在 Instagram 上向下滚动到末尾【英文标题】:How to scroll down to the end on Instagram 【发布时间】:2020-03-02 19:24:43 【问题描述】:

我试图根据标签“foody”从 instagram 上抓取帖子的网址。 使用 selenium 和 beautifulsoup,我可以抓取大约 2,160 个帖子的网址。

但是,我无法超越(有超过 4,000,000 个帖子)。有没有其他方法可以用“美食”标签刮掉整个帖子?或者至少是 2018-2019 年间发布的帖子的网址?

下面是我的 scraping 代码。

谢谢!

    
    
    instagram_url = "https://www.instagram.com" 
    tag_url = "https://www.instagram.com/explore/tags"
    ads = "foody" # hashtag
    
    #pausetime
    pause_time = 2
    
    #driver
    driver = webdriver.Chrome("chromedriver.exe")
    
    #go to hashtag page
    driver.get(f"tag_url/ads")
    time.sleep(pause_time)

    #scroll down
    lenOfPage = driver.execute_script("window.scrollTo(0, document.body.scrollHeight);var lenOfPage=document.body.scrollHeight;return lenOfPage;")
    match=False
    i = 0
    while(match==False):
        #urls
        html = driver.page_source
        bs_html = BeautifulSoup(html, "lxml")
        for roots in bs_html.find_all(name="div", attrs="class":"Nnq7C weEfm"):
            for link in roots.select("a"):
                real = link.attrs["href"]
                if real not in reallink:
                    reallink.append(real)
        print("appendend data: ", len(reallink))
        
        #Scroll down   
        lastCount = lenOfPage
        print(f"scrolling down i")
        i += 1
        time.sleep(pause_time)
        lenOfPage = driver.execute_script("window.scrollTo(0, document.body.scrollHeight);var lenOfPage=document.body.scrollHeight;return lenOfPage;")
        if lastCount==lenOfPage:
            match=True

【问题讨论】:

【参考方案1】:

使用 javascript,我能够向下滚动 3176 张图片,时间可追溯到 2 年零 4 个月。

我一共找到了 3166 张图片。之后它说“加载失败”。

我尝试再次重复这个实验,现在它似乎不会让我向下滚动太多。

我的猜测是,Instagram 对您可以抓取的内容有某种限制,因此人们不会滥用他们的服务器。

【讨论】:

【参考方案2】:

试试Social Scroll for Instagram extention(我知道这很基础,但对我有用)。正如 Alvaro Bataller 所说,如果您编写一些脚本向下滚动,那么在滚动几个帖子后,instagram 系统会自动阻止您一段时间,认为您可能是机器人。

但是这个扩展有一个内置的冷却系统,它会暂停滚动,这样 insta 系统就不会把你误认为是机器人。而且它可以很容易地让你到达最后的帖子,而不会被 insta 阻塞。

【讨论】:

以上是关于如何在 Instagram 上向下滚动到末尾的主要内容,如果未能解决你的问题,请参考以下文章

如何在向下滚动ScrollMagic后到达页面末尾时才能显示页脚?

如何在快速向上或向下滚动时退出键盘? [关闭]

您如何自动滚动 Instagram DM?

如何向下滚动编辑控件以显示内容?

在 Instagram 框中向下滚动关注者/关注列表

我的 UITableView 不会向下滚动到数据的末尾!为啥?