python bs4,如何刮这个文本在html?



网站网址:https://n.news.naver.com/mnews/article/421/0006111920

我想刮掉"5"在下面html.

我使用了以下代码:soup.select_one('span.u_likeit_text._count').get_text()

结果是' email '

html代码

<span class="u_likeit_text _count num">5</span>

这里的主要问题是计数是由JavaScript动态生成的,而不存在于response中,因此您的soup

您可以使用selenium来渲染页面,就像浏览器将做的那样,并将driver.page_source转换为BeautifulSoup对象:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from bs4 import BeautifulSoup
import time
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://n.news.naver.com/mnews/article/421/0006111920")
time.sleep(3)
soup = BeautifulSoup(driver.page_source, 'html.parser')
soup.select_one('span.u_likeit_text._count').get_text()

输出:

8

你必须用空格分隔类,而不是用点连接。

from bs4 import BeautifulSoup
soup = BeautifulSoup("<span class='u_likeit_text _count num'>5</span>", 'html.parser')
print(soup)
seven_day = soup.find_all("span" , class_="u_likeit_text _count num")
print(seven_day[0].text)

最新更新