Как скрести заголовки в о странице? - PullRequest
0 голосов
/ 13 апреля 2019

Я пытаюсь почистить заголовки на странице, но я так старался и потерпел неудачу из-за неправильного понимания того, что делать? Я новичок Поэтому мне нужна помощь.

import scrapy
from ..items import DmoztutorialItem


class DmozSpiderSpider(scrapy.Spider):
    name = 'Dmoz'
    start_urls = [
        'http://dmoz-odp.org/',
        ]

    def parse(self, response):
        items = DmoztutorialItem()
        Navbar = response.css('#main-nav a::text').extract()
        Category_names = response.css('.top-cat a::text').extract()
        Subcategories = response.css('.sub-cat a::text').extract()

        items['Navbar'] = Navbar
        items['Category_names'] = Category_names
        items['Subcategories'] = Subcategories

        yield items

        # Nav_page = response.css('#main-nav a::attr(href)').extract()
        Nav_page = 'http://dmoz-odp.org/docs/en/about.html'.extract()
        # About_heading = response.css('h1+ p , #mainContent 
                # h1::text').extract()

        items['Nav_page'] = Nav_page
        # items['About_heading'] = About_heading
        yield response.follow(Nav_page)

Ответы [ 2 ]

0 голосов
/ 13 апреля 2019

Чтобы проанализировать другую HTML-страницу, вам нужно получить объект Request с целевым URL-адресом в качестве первого аргумента для его конструктора и выполнить синтаксический анализ в методе вашего паука, который вы передаетеконструктору этого Request объекта в качестве параметра callback.

Я настоятельно рекомендую вам пройти курс Scrapy .То, чего вы пытаетесь достичь, описано в разделе Следующие ссылки .

0 голосов
/ 13 апреля 2019

Можете ли вы сказать, какой выход вам нужен? Это очень непонятно из вашего поста. Проверьте этот пример, где вы можете:

  1. Получить некоторые данные;
  2. Запрос вызова на другую страницу с сохраненной датой;
  3. Выход конечных данных.

Надеюсь, это поможет вам.

import scrapy


class DmozSpiderSpider(scrapy.Spider):
    name = 'Dmoz'
    start_urls = ['http://dmoz-odp.org/']
    nav_page = 'http://dmoz-odp.org/docs/en/about.html'

    def parse(self, response):
        # collect data on first page
        items = {
            'Navbar': response.css('#main-nav a::text').extract(),
            'Category_names': response.css('.top-cat a::text').extract(),
            'Subcategories': response.css('.sub-cat a::text').extract(),
            'Nav_page': self.nav_page,
        }
        # save and call request to another page
        yield response.follow(self.nav_page, self.parse_nav, meta={'items': items})

    def parse_nav(self, response):
        # do you stuff on second page
        items = response.meta['items']
        items['something'] = 'something'  # add your logics
        yield items

Или сделать отдельные логины для отдельных страниц:

import scrapy


class DmozSpiderSpider(scrapy.Spider):
    name = 'Dmoz'

    def start_requests(self):
        reqs = (
            ('http://dmoz-odp.org/', self.parse_main),
            ('http://dmoz-odp.org/docs/en/about.html', self.parse_nav),
        )
        for link, callback in reqs:
            yield scrapy.Request(link, callback)

    def parse_main(self, response):
        items = {
            'Navbar': response.css('#main-nav a::text').extract(),
            'Category_names': response.css('.top-cat a::text').extract(),
            'Subcategories': response.css('.sub-cat a::text').extract(),
        }
        yield items

    def parse_nav(self, response):
        items = {
            'something': 'something',   # add your logics
        }
        yield items
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...