Привет! Я пытаюсь создать веб-скребок для верхней части манги myanimelist (https://myanimelist.net/topmanga.php) с использованием Beautifulsoup и запросов. Моя проблема в том, что я получаю этот код ошибки:
Traceback (most recent call last):
File "C:/Kaan/Proje/Python/Programlar/Manga/manga2.py", line 119, in <module>
mangainfo(new_url)
File "C:/Kaan/Proje/Python/Programlar/Manga/manga2.py", line 29, in mangainfo
names.append(name.text)
AttributeError: 'NoneType' object has no attribute 'text'
Я понимаю этот код ошибки, но что я не понимаю, так это то, что я получаю это наугад. Допустим, я получаю эту ошибку на манге № 20. Если я снова запускаю программу, код может работать до манги 200, а затем выдавать ошибку. Пока я писалпри этом я снова запускаю программу и получаю ошибку на манге 140.
Как мне решить эту проблему? Это происходит из-за моего кодирования или возможно из-за сайта?
import requests
from bs4 import Tag, BeautifulSoup
time import time
url = "https://myanimelist.net/topmanga.php"
def mangainfo(url):
manga_id, scores, manga_genre, names, authors = list(), list(), list(), list(), list()
r = requests.get(url)
c = r.content
soup2 = BeautifulSoup(c, "html.parser")
# Manga Links
manga_links = soup2.find_all("a", class_="hoverinfo_trigger fs14 fw-b")
count = 0
for link in manga_links:
start = time()
r = requests.get(link["href"])
c = r.content
soup = BeautifulSoup(c, "html.parser")
# Names
name = soup.find("h1", class_="h1")
names.append(name.text)
# Scores
score = soup.find("div", class_="fl-l score")
scores.append(str(score.text.strip()))
# Manga ID
for x in link["href"].split("/"):
if x.isdigit():
manga_id.append(int(x))
break
# Manga Genres
genre = soup.find("span", text="Genres:")
manga_genre.append([x.text for x in genre.next_siblings if isinstance(x, Tag)])
# Authors
author = soup.find("span", text="Authors:")
authors.append([x.text for x in author.next_siblings if isinstance(x, Tag)])
stop = time()
count += 1
print("{} - Time: {:.2f} Link: {} ==> OK".format(count, stop - start, link["href"]))
for i in range(0, 46651, 50): # 46651 limit
new_url = url + "?limit=" + str(i)
print("Sayfa: {} ===> {}".format(str(i), new_url))
start_time = time()
mangainfo(new_url)
stop_time = time()
print("MangaInfo Time: {:.2f}".format(stop_time - start_time))