我无法使用 bs4 提取 post 的 instagram 主题标签
I cant extract instagram hashtags of a post with bs4
我想使用 BeautifoulSoup4 从特定的 post(给定 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)
此代码的结果只是一个空列表。有人可以帮我解决这个问题吗?
您尝试抓取的页面似乎需要 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很像,拿起来应该不是很困难
我想使用 BeautifoulSoup4 从特定的 post(给定 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)
此代码的结果只是一个空列表。有人可以帮我解决这个问题吗?
您尝试抓取的页面似乎需要 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很像,拿起来应该不是很困难