Я сейчас пытаюсь почистить этот онлайн-форум: https://community.whattoexpect.com/forums/postpartum-depression.html
Как видите, главная страница - это страница списка со всеми сообщениями, и тогда мне придется нажмите на каждое сообщение, чтобы получить полное содержание и ответы. Информация, которая мне нужна для каждого сообщения: Заголовок, Автор, Дата и содержание сообщения. Мне также нужна та же информация для каждого ответа на каждое сообщение (автор, дата и содержание)
Проблема, с которой я столкнулся до сих пор, заключается в том, что я могу видеть дату публикации на веб-сайте, но не с Scrapy. Вот проверка элемента:

Но в оболочке Scrapy есть пустое место, где должен быть текст даты:
Я перепробовал много методов CSS и Xpath, но ничего не работает.
В конце концов, я хочу, чтобы мой результирующий CSV-файл содержал исходную информацию о записи в первой строке, а затем информацию об ответах в следующей строке. Это позволяет отслеживать взаимодействия. И заголовок сообщения или другой идентификатор сообщения будет общим идентификатором. Вот пример:

Хорошо, вот мой паук Scrapy. Это очень грязно, потому что я пытался решить проблему с датой.
import scrapy
class PeripartumSpider (scrapy.Spider): name = 'respartum'
start_urls = ['http://www.community.whattoexpect.com/forums/postpartum-depression.html']
def parse(self, response):
for post_link in response.xpath('//*[@class="group-discussions__list__item__block"]/a/@href').extract():
link = response.urljoin(post_link)
yield scrapy.Request(link, callback=self.parse_post)
# Checks if the main page has a link to next page if True keep parsing.
next_page = response.xpath('(//a[@class="page-link"])[1]/@href').extract_first()
if next_page:
yield scrapy.Request(next_page, callback=self.parse)
def parse_thread(self, response):
original_post = response.xpath("//*[@class='__messageContent fr-element fr-view']/p/text()").extract()
title = response.xpath("//*[@class='discussion-original-post__title']/text()").extract_first()
author_name = response.xpath("//*[@class='discussion-original-post__author__name']/text()").extract_first()
timestamp = response.xpath("//*[@class='discussion-original-post__author__updated']/text()").extract_first()
replies_list = response.xpath("//*[@class='discussion-replies__list']").getall()
for reply in replies_list:
# reply content
replies = "".join(reply.xpath(".//*[@class='wte-reply__content']/p/text()").extract())
reply_author= reply.xpath("//*[@class='wte-reply__author']/text()").extract_first()
yield {
"title": title,
"post": original_post,
"author_name": author_name,
"replies": replies,
"reply_author": reply_author,
"time": timestamp
}