Парсер данных из сайта новостей "gorod48.ru" на lxml
Пробую парсить данные из сайта новостей "gorod48.ru" в формате 'Название новости', 'Ссылка', 'Количество комментариев'. Там где нет комментариев должно проставляться 0, а там где есть, соответственно должно быть их количество. Работаю на lxml. Колличество комментариев не соответсвует новости
import requests
from lxml import html
url = 'https://gorod48.ru/news/date/05.07.2020/'
page = requests.get(url)
tree = html.fromstring(page.text)
for trees in tree:
name=trees.xpath('.//div[@class="newsFeedList"]//div[@class="item link"]/a/text()')
link_news = trees.xpath('.//div[@class="newsFeedList"]//div[@class="comment"]/a/@href')
count_comments = trees.xpath('.//div[@class="newsFeedList"]//div[@class="item"]')
Далее должно быть так:
- Если к новости есть комментарии:
то добавить количество комментариев к конкретно этой новости в список - Иначе:
то добавить количество "0" к конкретно этой новости в список
И все данные добавить в CSV
Ответы (1 шт):
Автор решения: М. Абдул
→ Ссылка
import requests
from lxml import html
url = 'https://gorod48.ru/news/date/05.07.2020/'
page = requests.get(url)
tree = html.fromstring(page.text)
name=tree.xpath('.//div[@class="newsFeedList"]//div[@class="item link"]/a/text()')
link_news =tree.xpath('.//div[@class="newsFeedList"]//div[@class="item link"]/a/@href')
link_comments = tree.xpath('.//div[@class="newsFeedList"]//div[@class="comment"]/a/@href')
count_comments = tree.xpath('.//div[@class="newsFeedList"]//div[@class="comment"]/a/text()')
i, j = 0,0
csv = ""
delim = ";" #Разделитель
while i < len(name):
print('Название новости:',name[i])
print('Ссылка:',link_news[i])
print('Количество комментариев:',end=" ")
csv += name[i] + delim + link_news[i]+delim
if link_news[i] in link_comments[j]:
print(count_comments[j])
csv += count_comments[j]
j += 1
else:
print(0)
csv += "0"
i += 1
csv += "\n"
print()
with open("путь/для/сохранения.csv","w") as f:
f.write(csv)

