Объект Beautifulsoup NoneType не имеет атрибута find_all.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Объект Beautifulsoup NoneType не имеет атрибута find_all.

Сообщение Anonymous »

Следуя этому руководству https://www.scrapingdog.com/blog/scrape ... ng-python/, вы столкнулись с этой ошибкой:

Код: Выделить всё

Traceback (most recent call last):
File "C:/Users/det-lab/Documents/PycharmProjects/Indeed_webscrape/Indeed_job_data.py", line 23, in 
alllitags = allData.find_all("li", {"class":"eu4oa1w0"})
AttributeError: 'NoneType' object has no attribute 'find_all'

Вот моя версия программы:

Код: Выделить всё

import requests
from bs4 import BeautifulSoup

l = []
o = {}

#declare the target URL and make an HTTP connection to that website.

target_url = 'https://www.indeed.com/jobs?q=data+analyst&l=New+York%2C+NY&from=searchOnHP&vjk=7cfb06a1924a00ef&advn\
=8756188910781422'

head = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0",
"Accept-Encoding": "gzip, deflate, br",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Connection": "keep-alive",
"Accept-Language": "en-US,en;q=0.9,lt;q=0.8,et;q=0.7,de;q=0.6",
}

resp = requests.get(target_url, headers=head)

soup = BeautifulSoup(resp.text, 'html.parser')

allData = soup.find("div", {"class": "mosaic-provider-jobcards"})

#iterate over each of these li tags and extract all the data one by one using a for loop.

alllitags = allData.find_all("li", {"class":"eu4oa1w0"})

for i in range(0,len(alllitags)):
try:
o["name-of-the-job"]=alllitags[i].find("a").find("span").text
except:
o["name-of-the-job"] = None

try:
o["name-of-the-company"] = alllitags[i].find("span", {"data-testid":"company-name"}).text
except:
o["name-of-the-company"] = None
try:
o["job-location"] = alllitags[i].find("div", {"data-testid":"text-location"}).text
except:
o["job-location"] = None
try:
o["job-details"] = alllitags[i].find("div", {"class":"jobMetaDataGroup"}).text
except:
o["job-details"] = None
try:
o["pay-range"] = alllitags[i].find("div", {"class":"metadata salary-snippet-container"}).text
except:
o["pay-range"] = None

l.append(o)
o={}
print(l)
Я знаю, что это распространенная ошибка при веб-скрапинге, но мне хотелось бы получить конкретное объяснение.

Подробнее здесь: https://stackoverflow.com/questions/791 ... e-find-all
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»