Scrapy Xpath возвращает ноль, но работает нормально Chrome - PullRequest
0 голосов
/ 12 февраля 2020

Я довольно новичок в Scrapy, но я разрабатываю веб-скрап для получения определенной информации от GoFundMe, в частности, в данном случае, количества людей, которые пожертвовали на проект. Я написал заявление xpath, которое отлично работает в Chrome, но возвращает нуль в Scrapy.

Случайный пример проекта - https://www.gofundme.com/f/passage/donations, который в настоящее время имеет 22 пожертвования. Приведенное ниже в Chrome проверка дает мне «Пожертвования (22)», и это то, что мне нужно -

//h2[@class="heading-5 mb0"]/text()

Однако в моем пауке Scrapy следующее дает ноль -

class DonationsSpider(scrapy.Spider):
name = 'get_donations'

start_urls = [
    'https://www.gofundme.com/f/passage/donations'
]

def parse(self, response):
    amount_of_donations = response.xpath('//h2[@class="heading-5 mb0"]/text()').extract_first()

    yield{
        'Donations': amount_of_donations
    }

Кто-нибудь знает, почему Scrapy не может увидеть это значение?

Я делаю это в попытке выяснить, сколько раз остальному пауку нужно l oop, как, когда я жестко кодирую это ценить это работает без проблем и дает все пожертвования.

1 Ответ

0 голосов
/ 14 февраля 2020

Ну, потому что есть много запросов на выполнение запроса "https://www.gofundme.com/f/passage/donations". Где

ваш chrome достаточно умен, чтобы понимать javascript, используя эту хитрость, он читает код JavaScript и получает все ответы с разных конечных точек для выполнения вашего запроса

есть один запрос к конечной точке "https://gateway.gofundme.com/web-gateway/v1/feed/passage/counts", который загружает данные, которые вы ищете. что ваш python сценарий не может сделать, а также не рекомендуется.

Вместо этого вы можете напрямую обратиться к этому API и получить данные; хорошая новость заключается в том, что конечная точка отвечает JSON данными, которые очень структурированный, легко разбираемый.

и я уверен, что вы также ищете данные, поступающие с этой конечной точки "https://gateway.gofundme.com/web-gateway/v1/feed/passage/donations?limit=20&offset=0&sort=recent"

для Для получения дополнительной информации вы можете обратиться к одному из моих блогов, нажав здесь

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