我正在用python学习beuatifulSoup,但我不明白为什么我的代码无法正常工作。 我正在尝试在HTML代码的这一部分中获取文本“我的心情”:
<div class="page_block_header_inner _header_inner"><a class="ui_crumb"
href="/lovely_detka_tytyty" onclick="return nav.go(this, event, {back:
true});">my mood</a><div class="ui_crumb_sep"></div><a class="ui_crumb"
href="/albums-68872445" onclick="return nav.go(this, event, {back: true});
我的代码是
from bs4 import BeautifulSoup
import requests
import lxml
url = 'https://vk.com/photo-68872445_422126739?rev=1'
req = requests.get(url)
soup = BeautifulSoup(req.text, 'lxml')
for row in soup.find_all('div',attrs={"class" : "ui_crumb"}):
print (row.text)
但是我的代码不起作用,我收到一个空白字符串。你有什么想法吗?
答案 0 :(得分:0)
您可以尝试以下类选择器
print(soup.select_one('.group_link').text)
requests
似乎挂起,因此也可以使用selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = 'https://vk.com/photo-68872445_422126739'
driver = webdriver.Chrome()
driver.get(url)
item = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".group_link"))).text
print(item)
driver.quit()
答案 1 :(得分:0)
您尝试获取的文本位于锚标记上,并且正在查找div标签。
<a class="ui_crumb" href="/lovely_detka_tytyty" onclick="return nav.go(this, event, {back: true});">my mood</a>
是您要尝试找到的
for row in soup.find_all('a', class_="ui_crumb")
可能会更好地工作。
此外,在请求中定义标头将确保返回您期望的页面版本,而没有标头的服务器可能会返回您不期望的页面。
对于此页面的某些版本,您要查找的实际标签是:
<a href="/lovely_detka_tytyty">my mood</a>
您更有可能通过
找到的for row in soup.find_all('a', href=True, class_=False):
print(row.get_text())