Scrapy получает частичные данные - PullRequest
0 голосов
/ 07 ноября 2018

Я немного переживаю со Scrapy - моя задача - получить данные с сайта краудфандинга (я выбрал kickstarter.com). Теперь я начал с сканирования одной страницы (начиная с здесь ) и извлечения из нее ссылок проектов, а затем сканирования по этим ссылкам. В целях отладки я сохранил ответы этих ссылок в виде HTML-файлов. Вот мой код:

import scrapy
import time
import json
from bs4 import BeautifulSoup

class KsSpider(scrapy.Spider):
    name = "kickstarter"

    def __init__(self):
        super().__init__()
        self.page = 1
        self.dbg = False


    start_urls = []
    num_pages = 1

    for i in range(num_pages):
        start_urls.append("https://www.kickstarter.com/discover/advanced?category_id=16&woe_id=0&sort=magic&seed=2569222&page=" + str(i+1) + "")

    def parse(self, response):
        soup = BeautifulSoup(response.text, features='lxml')
        candidates = list(soup.findAll('div', class_='js-react-proj-card'))

        urls = set()
        for c in candidates:
            # extracting the data-project dict
            data_project = json.loads(c.attrs['data-project'])
            urls.add(data_project['urls']['web']['project'])

        for url in urls:
            if self.dbg:
                print("Sleeping...")
                time.sleep(3)
                print("Request for url:", url)
            yield scrapy.Request(url, callback=self.parse_contents)


    def parse_contents(self, response):
        filename = 'ksproj-%s.html' % self.page
        self.page += 1
        with open(filename, 'wb') as f:
            f.write(response.body)
        self.log('Saved file %s' % filename)

К сожалению, данные, которые были сохранены, не полны - например, в этом проекте , вот как это выглядит, когда я смотрю их с помощью своего браузера: enter image description here это именно та часть, которая отсутствует на моей загруженной веб-странице (присутствует все, что находится ниже этой части страницы).

Что я могу сделать, чтобы получить полные данные? Спасибо

...