Пытаясь скрести, возвращаясь [] - PullRequest
0 голосов
/ 16 октября 2018

Я использую Scrapy 1.5.1 с Python 2.7.6.Я пытаюсь очистить имена пользователей со следующей страницы .

Я реализовал следующий код:

# -*- coding: utf-8 -*-
import scrapy
from scrapy.http import Request


class BtctalkspiderSpider(scrapy.Spider):
    name = 'btctalkSpider'
    allowed_domains = ['bitcointalk.org']
    max_uid = 10

    def parse(self, response):
        urls = response.xpath("//a/@href").extract()
        for i in range(self.max_uid):
            # scrapy shell "https://bitcointalk.org/index.php?action=profile;u=1"
            yield Request('https://bitcointalk.org/index.php?action=profile;u=%d' % i, callback=self.parse_application)

    def parse_application(self, response):
        userName = response.xpath('//td[normalize-space(.)="Name:"]/following-sibling::td/text()').extract()


        yield {
            'userName': userName
        }

Однако, пытаясь очистить сайт, явозвращение []

Я проверил xpath через оболочку, и все, кажется, работает.

Есть предложения, что я делаю неправильно?

1 Ответ

0 голосов
/ 17 октября 2018

Некоторые из URL-адресов профилей просто не существуют, поэтому выражение XPath равно нулю.

для примера: https://bitcointalk.org/index.php?action=profile;u=2

Но также необходимо указать начальный URL-адреснапример: start_urls = ['https://bitcointalk.org'] или просто добавьте start_requests функцию.

Вот цитата из документов Scrapy относительно start_urls 1 ...

Вместо реализации метода start_requests (), который генерирует scrapy.Запрашивая объекты из URL, вы можете просто определить атрибут класса start_urls со списком URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...