Лом https://socialblade.com/ - PullRequest
       10

Лом https://socialblade.com/

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

Здравствуйте, я новичок в scrapy и пытаюсь удалить сайт https://socialblade.com/, чтобы получить идентификатор канала mostviewed и mostsubscribed youtuber страны.

Я делаю это, нажимая на ссылку youtuber на главной странице листинга (например, https://socialblade.com/youtube/top/country/pk/mostsubscribed).. Затем открывается новая страница, а последняя часть новой открытой страницы содержит идентификатор канала (например, ).https://socialblade.com/youtube/channel/UC4JCksJF76g_MdzPVBJoC3Q).

Вот мой код:

import scrapy

class SocialBladeSpider(scrapy.Spider):
    name = "socialblade"

    def start_requests(self):
        urls = [
            'https://socialblade.com/youtube/top/country/pk/mostviewed',
            'https://socialblade.com/youtube/top/country/pk/mostsubscribed'
        ]

        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse_url(self, response):
        data = {
            'url': response.url.split('/')[-1],
            'displayName': response.css('div#YouTubeUserTopInfoBlockTop div h1::text').extract_first()
        }

        yield {
            response.meta['country']: {
                response.meta['key']: data
            }
        }

    def parse(self, response):
        key = response.url.split("/")[-1]
        country = response.url.split("/")[-2]

        for a in response.css('a[href^="/youtube/user/"]'):
            request = scrapy.Request(url='https://socialblade.com' + a.css('::attr(href)').extract_first(), callback=self.parse_url)
            request.meta['key'] = key
            request.meta['country'] = country
            yield request

Проблема: после удаления этих двух URL я должен получить всего 500 записей. Но я получаю только 348 записей.выполнил НИОКР, но не смог найти решение.

(Пожалуйста, помогите мне решить эту проблему)

1 Ответ

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

Передайте dont_filter=True на ваши запросы, если вы не хотите отфильтровывать повторяющиеся запросы.

Для получения дополнительной информации см. Документацию о запросе .

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