Я пытаюсь прочитать индексную страницу, чтобы вычеркнуть категории цитат с сайта цитат, чтобы изучить скрап.Я новичок в этом!
Я могу читать отдельные страницы (категории) с моим кодом, однако я хотел бы прочитать страницу индекса, чтобы прочитать страницы цитаты.
Часть def parse_item
работает с отдельными страницами.Однако я не могу получить часть LinkExtractor
для экстраполяции ссылок.
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import Rule
class QuotesSpider(scrapy.Spider):
name = "quotes"
allowed_domains = ['website.com']
start_urls = [
'https://www.website.com/topics'
]
rules = (
Rule(LinkExtractor(allow=('^\/topics.*', )), callback='parse_item')
)
def parse_item(self, response):
for quote in response.css('#quotesList .grid-item'):
yield {
'text': quote.css('a.oncl_q::text').extract_first(),
'author': quote.css('a.oncl_a::text').extract_first(),
'tags': quote.css('.kw-box a.oncl_list_kc::text').extract(),
'category' : response.css('title::text').re(r'(\w+).*')
}
next_page = response.css('div.bq_s.hideInfScroll > nav > ul > li:nth-last-child(1) a::attr(href)').extract_first()
if next_page is not None:
next_page = response.urljoin(next_page)
yield scrapy.Request(next_page, callback=self.parse)