我无法使用bs4提取帖子的instagram标签

时间:2020-06-25 06:55:22

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

我想使用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)

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

1 个答案:

答案 0 :(得分: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自动填充了该文件。

要解决此问题,您可以使用{p>

  • 用于模拟用户在网络浏览器中转到这些页面的网络驱动程序(例如selenium
  • requests-HTML,这是一个稍稍新的软件包,可让您在页面上呈现javascript,并具有许多其他很棒的功能,可用于网页抓取

与selenium合作的人更多,这使调试比使用request-HTML更容易,但是如果您不想学习像selenium这样的新模块,则request-HTML与请求和选择它非常相似。起来应该不是很困难