【问题标题】:I cant extract instagram hashtags of a post with bs4我无法使用 bs4 提取帖子的 instagram 主题标签
【发布时间】:2020-06-25 06:55:22
【问题描述】:

我想使用 BeautifoulSoup4 从特定帖子(给定 url)中提取主题标签。首先,我使用请求获取页面,并尝试使用 find_all() 来获取每个主题标签,但似乎存在隐藏问题。

代码如下:

import requests
from bs4 import BeautifulSoup as bs



URL = 'https://www.instagram.com/p/CBz7-X6AOqK/?utm_source=ig_web_copy_link'

r = requests.get(URL)
soup = bs(r.content,'html.parser')
items = soup.find_all('a',attrs={'class':' xil3i'})

print(items)

这段代码的结果只是一个空列表。有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: python-3.x web-scraping beautifulsoup python-requests instagram


    【解决方案1】:

    您尝试抓取的页面看起来需要javascript。这意味着当您发送GET 请求时,网页的某些元素不存在。

    您可以确定您正在抓取的网页是否需要 javascript 来填充您需要的信息的一种方法是将 html 保存到文件中:

    URL = 'https://www.instagram.com/p/CBz7-X6AOqK/?utm_source=ig_web_copy_link'
    
    r = requests.get(URL)
    
    with open('dump.html', 'w+') as file:
        file.write(r.text)
    

    然后在网络浏览器中打开该文件

    如果您打开的文件没有您想要抓取的信息,那么它很可能是使用javascript 自动填充的。

    要解决这个问题,您可以使用 javascript 渲染

    • 一个网络驱动程序(如selenium),模拟用户在网络浏览器中访问这些页面
    • requests-HTML,这是一个稍微新的包,允许您在页面上呈现 javascript,并具有许多其他对网络抓取有用的很棒的功能

    有更多的人使用 selenium,这使得调试比使用 requests-HTML 更容易,但是如果您不想了解像 selenium 这样的新模块,requests-HTML 与 requests 非常相似并选择它起来应该不是很困难

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-19
      • 1970-01-01
      • 1970-01-01
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多