


Парсинг python , проблема с циклом csv вывода
Проблема такая , написал код парсинга на python , проблема в том , что парсит он все новости на страничке , а вот в файл csv выводит только первую новость со словом в KEYWORD , а все последующие он не проверяет , я так понял проблема в цикле , помогите кто сможет , буду благодарен.(И если можете напишите в целом мои ошибки в коде)
import requests
from bs4 import BeautifulSoup
import csv
import re
HOST = 'http://leslipetsk.ru/'
KEYWORD = "Общественный"
URL = 'http://leslipetsk.ru/?m=202303'
HEADERS = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' ,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'
}
def get_html(url):
r = requests.get(url ,headers=HEADERS)
return r
def get_content(html , keyword):
soup = BeautifulSoup(html, 'html.parser')
items = soup.find_all('div', class_='entry-content')
print(items)
result = []
for item in items:
text = item.get_text()
if keyword in text:
result.append(text)
return result
def write_csv(result):
with open("word.csv", "w") as file:
writer = csv.writer(file)
for line in result:
writer.writerow([line])
html = get_html(URL)
result = get_content(html.text , KEYWORD)
write_csv(result)
Проблема в том, что вы возвращаете результат внутри цикла for. Это означает, что функция `get_content` возвращает результат после первой итерации цикла for. Чтобы исправить это, вы должны убрать отступ у строки `return result`, чтобы она находилась на одном уровне с циклом for, а не внутри него.
Вот исправленная версия функции `get_content`:
```python
def get_content(html , keyword):
soup = BeautifulSoup(html, 'html.parser')
items = soup.find_all('div', class_='entry-content')
print(items)
result = []
for item in items:
text = item.get_text()
if keyword in text:
result.append(text)
return result
```