Пытаясь скрести, возвращаясь []

1

Я использую 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 через оболочку, и все работает.

Любые предложения, что я делаю неправильно?

  • 4
    ты скребешь (ломаешь), а не ломаешь (лома).
  • 0
    @AnttiHaapala Спасибо за ваш ответ! Любое предложение, почему я получаю [] обратно?
Теги:
scrapy

1 ответ

1
Лучший ответ

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

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

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

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

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

  • 0
    Спасибо за ваш ответ! Любое предложение, почему я получаю для profile;u=1 ничего не возвращается?
  • 1
    Вам нужно указать начальный URL start_urls = ['https://bitcointalk.org'] или просто добавить функцию start_requests .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню