【问题标题】:beautiful soup unable to find elements from website美丽的汤无法从网站上找到元素
【发布时间】:2020-03-02 11:52:56
【问题描述】:

这是我第一次使用网络抓取,所以让我放松一下。我正在尝试从网站中提取“card_tag”。我三次检查了卡片标签是否在他们尊重的标签内,如代码所示。

import requests
from bs4 import BeautifulSoup


result = requests.get("https://www.anime-planet.com/users/mistersenpai/anime/dropped")
src = result.content
soup = BeautifulSoup(src, features="html.parser")


urls = []
for div_tag in soup.find_all('div id="siteContainer"'):
    ul_tag = div_tag.find("ul class")
    li_tag = ul_tag.find("li")
    card_tag = li_tag.find("h3")
    urls.append(card_tag)




print(urls)

当我打印 url 列表时,它什么也不输出。您可以通过访问代码中看到的链接并检查“Blood-C”上的元素来查看我正在寻找的东西。如您所见,它列在我要查找的标签中,但我的代码似乎找不到它。 任何帮助将不胜感激。

【问题讨论】:

  • 您是否尝试过自己运行处理的每个部分以查看您从哪里开始得到意外结果?

标签: html python-3.x web-scraping beautifulsoup


【解决方案1】:

只是您需要使用标签和属性更改的小语法。

import requests
from bs4 import BeautifulSoup


result = requests.get("https://www.anime-planet.com/users/mistersenpai/anime/dropped")
src = result.content
soup = BeautifulSoup(src, features="html.parser")


urls = []
containers = soup.find_all('div', {'id':'siteContainer'})
for div_tag in containers:
    ul_tag = div_tag.find("ul", {'data-type':'anime'})
    li_tag = ul_tag.find_all("li")
    for each in li_tag:
        card_tag = each.find("h3")
        urls.append(card_tag)
        print(card_tag)

另外,您可以跳过所有这些,直接使用类属性为cardName 的那些<h3> 标签:

import requests
from bs4 import BeautifulSoup


result = requests.get("https://www.anime-planet.com/users/mistersenpai/anime/dropped")
src = result.content
soup = BeautifulSoup(src, features="html.parser")


urls = []
for card_tag in soup.find_all('h3', {'class':'cardName'}):
    print(card_tag)
    urls.append(card_tag)

输出:

<h3 class="cardName">Black Butler</h3>
<h3 class="cardName">Blood-C</h3>
<h3 class="cardName">Place to Place</h3>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-20
    • 2019-10-06
    • 2016-12-18
    • 2020-09-28
    • 2021-10-01
    • 2020-12-09
    • 2021-05-03
    相关资源
    最近更新 更多