красивый суп не может найти элементы с сайта - PullRequest
0 голосов
/ 02 марта 2020

Я впервые работаю со соскобами в сети, так что не торопись. Я пытаюсь вытащить "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)

Когда я go печатает список URL, он ничего не выводит. Вы можете увидеть то, что я ищу, перейдя по ссылке, как показано в коде, и проверив элемент «Blood- C». Как вы можете видеть, он указан в теге, который я пытаюсь найти, но мой код не может его найти. Любая помощь будет высоко ценится.

1 Ответ

2 голосов
/ 02 марта 2020

просто второстепенный синтаксис, который нужно изменить с помощью тегов и атрибутов.

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)

Кроме того, вы можете просто пропустить все это и go прямо к этим <h3> тегам с атрибутом класса cardName:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...