BS4 - «AttributeError: объект 'NoneType' не имеет атрибута 'text'» - PullRequest
0 голосов
/ 19 июня 2020

Я не могу извлечь данные с этой веб-страницы с помощью bs4 из-за следующей ошибки:

"AttributeError: 'NoneType' object has no attribute 'text'"

может ли кто-нибудь изменить мой код?

вот мой код

from bs4 import BeautifulSoup
import requests

url = 'https://e-masjid.jais.gov.my/index.php/profail?page=1'

html_content = requests.get(url).text

soup = BeautifulSoup(html_content, 'lxml')

masjid_table = soup.find("table", attrs={"class": "Masjid"})
masjid_table_data = masjid_table.tbody.find_all("tr")

headings = []
for td in masjid_table_data[0].find_all("td"):
    headings.append(td.b.text.replace('\n', ' ').strip())

print(headings)masjid_table = soup.find("table", attrs={"class": "Masjid"})

masjid_table_data = masjid_table.tbody.find_all("tr")

headings = []
for td in masjid_table_data[0].find_all("td"):
    headings.append(td.b.text.replace('\n', ' ').strip())

print(headings)

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Ошибка атрибута означает, что вы вызываете атрибут, который не существует для данного объекта. В вашем случае requests.get(url) возвращает None, поэтому requests.get(url).text совпадает с None.text, что недопустимо. Если это ожидается, проверьте, возвращает ли запрос что-либо:

result = requests.get(url)
if result:
    string = requests.get(url).text
0 голосов
/ 19 июня 2020

Хотя я не знаю, какой результат вы хотите получить .. Это даст вам все имена масджидов ..

soup = BeautifulSoup(html_content.text, 'lxml')

masjid_table = soup.find("table", attrs={"id": "pemohon"})
masjid_table_data = masjid_table.tbody.find_all("tr")

headings = []
for row in masjid_table_data:
    headings.append(row.find_all('td')[1].text.replace('\nMASJID', ' ').strip())

Вы можете попробовать изменить здесь индекс row.find_all('td')[1], чтобы получить соответствующие столбцы.

...