#python #pandas
Вопрос:
код генерирует пустой файл. Возможно, отсутствуют правильные записи div/тегов(?). Пытаюсь очистить несколько страниц на одном сайте.
import requests
from bs4 import BeautifulSoup
import pandas as pd
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36 Edg/91.0.864.71'}
questionlist = []
def getQuestions(tag, page):
url = f'https://www.tradepractitioner.com/tag/{tag}'
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.text, 'html.parser')
questions = soup.find_all('div', {'class': 'main grid '})
for item in questions:
question = {
'title': item.find('a', {'class': 'post-title'}).text,
'status': item.find('a', {'class': 'post-content'}).text,
}
questionlist.append(question)
return
for x in range(1,5):
getQuestions('cfius', x)
df = pd.DataFrame(questionlist)
df.to_excel('stackquestions.xlsx', index=False)
print('End.')
Ответ №1:
У вас есть завершающий пробел:
Заменять:
questions = soup.find_all('div', {'class': 'main grid '}) # <- HERE " '"
Автор::
questions = soup.find_all('div', {'class': 'main grid'})
Теперь у вас есть еще одна проблема:
AttributeError: 'NoneType' object has no attribute 'text'
Решение
questions = soup.find_all('article', {'class': 'post'})
for question in questions:
question = {'title': question.find('h1', {'class': 'post-title'}).find('a').text,
'status': question.find('section', {'class': 'post-content'}).find(text=True)}
questionlist.append(question)