Почему мой код возвращает пробелы? (соскоб с Scrapy) - PullRequest
0 голосов
/ 12 июня 2019

Моя цель - очистить комиксы в порядке дня недели и сохранить их в таблице данных Excel. Мой источник https://comic.naver.com/webtoon/weekday.nhn.

Мне удалось очистить данные непосредственно через терминал, и я хотел бы написать подходящий сценарий для всего процесса, но не добился большого успеха.

прямая очистка данных через терминал с помощью response.xpath("//div[@class='list_area daily_all']/div[1]/div/h4/span/text()").extract() даст правильные данные. Будние дни заказываются из div [1 ~ 7], и этот код возвращает «понедельник».

Следующий код возвращает список комиксов по понедельникам. response.xpath("//div[@class='list_area daily_all']/div[1]/div//ul/li/a[@class='title']/text()").extract()

Однако следующий код не возвращает желаемых результатов.

def parse(self, response):
    for webtoon in response.xpath("//div[@class='list_area daily_all']/div/div"):
        yield {
            'Day': webtoon.xpath('/h4/span/text()').extract(),
            'Title': webtoon.xpath("/ul/li/a[@class='title']/text()").extract(),
        }

Ожидаемый результат будет 7 строк следующего кода в порядке дня недели {'Day': [day], 'Title': [title1, title2, title3]}

Однако мой код возвращается {'Day': [], 'Title': []}

Надеюсь, все это имеет смысл.

1 Ответ

1 голос
/ 12 июня 2019

Вы должны начать регулярное выражение "День" и "Заголовок" с. (Точка).

Когда вы делаете это, не имеет значения, что вы не используете response.xpath, вы все еще пытаетесь получить элемент h4 в корне XML, а не тег h4 после list_area daily_all div .

webtoon.xpath('/h4/span/text()').extract()

Правильный способ сделать это - добавить . перед /h4, эта точка ссылается на текущую позицию вашего предыдущего селектора xpath.

webtoon.xpath('./h4/span/text()').extract()
...