Как очистить 2 веб-страницы с тем же доменом на scrapy, используя python? - PullRequest
0 голосов
/ 03 апреля 2019

Привет, ребята. Я очень новичок в очистке данных, я попробовал базовый.Но моя проблема в том, что у меня есть 2 веб-страницы с тем же доменом, который мне нужно очистить

Моя логика: Первая страница www.sample.com/view-all.html * Эта страница открывает весь список элементов, и мне нужно получить все атрибуты hrefкаждого элемента.

Вторая страница www.sample.com/productpage.52689.html

* это ссылка, полученная с первой страницы, поэтому 52689 необходимо динамически менять в зависимости от ссылки, предоставленной первой страницей.

Мне нужно получить все данные, такие как заголовок, описание и т. Д. На второй странице.

Я думаю, что это цикл, но он не работает с моей стороны.Я ищу в Google, но ни у кого нет такой же проблемы, как у меня.пожалуйста, помогите мне

import scrapy

class SalesItemSpider(scrapy.Spider):
    name = 'sales_item'
    allowed_domains = ['www.sample.com']
    start_urls = ['www.sample.com/view-all.html', 'www.sample.com/productpage.00001.html']

    def parse(self, response):
        for product_item in response.css('li.product-item'):
            item = {
                'URL': product_item.css('a::attr(href)').extract_first(),
            }
            yield item`

1 Ответ

1 голос
/ 03 апреля 2019

Внутри parse вы можете yield Request() с URL-адресом и именем функции, чтобы очистить этот URL-адрес в другой функции

def parse(self, response):

    for product_item in response.css('li.product-item'):
        url = product_item.css('a::attr(href)').extract_first() 

        # it will send `www.sample.com/productpage.52689.html` to `parse_subpage` 
        yield scrapy.Request(url=url, callback=self.parse_subpage)


def parse_subpage(self, response):
    # here you parse from www.sample.com/productpage.52689.html 

    item = {
        'title': ..., 
        'description': ...
    }

    yield item

Ищите Request в Документация Scrapy и его учебник


Существует также

response.follow(url, callback=self.parse_subpage)

, который автоматически добавит www.sample.com к URL-адресам, поэтому вам не придется делать это на своемвладелец в

Request(url = "www.sample.com/" + url, callback=self.parse_subpage)

См. Ярлык для создания запросов


Если вы заинтересованы в очистке, тогда вы должны прочитать docs.scrapy.org от первой страницы до последней.

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