Не уверены, почему Scrapy response.xpath передает список - PullRequest
0 голосов
/ 07 декабря 2018

Этот паук предназначен для получения списка URL-адресов в домене и записи содержимого XPath в html-файл.Я могу заставить его работать, открывая txt-файл как 'a +' и записывая строку, но если я хочу открыть html-файл как 'ab +', ни строка, ни результат response.xpath не будут работать.Последний дает мне эту ошибку:

TypeError: требуется объект, похожий на байты, а не 'list'

Я не могу понять, откуда приходит списокхотя.

Вот код:

import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor

class MySpider(CrawlSpider):
    name = 'FirstSpider'
    allowed_domains = ['domain.com']
    with open("urls.txt", "rt") as f:
        start_urls = [url.strip() for url in f.readlines()]

    def parse(self, response):
        page = response.url.split("/")[-2]
        filename = 'blah-%s.html' % page
        with open(filename, 'ab+') as f:
            f.write(response.xpath("//*[@id='content']").extract())

1 Ответ

0 голосов
/ 16 января 2019

Заменить extract() на get() (или extract_first()).

...