on1baku Ответов: 0

Как очистить несколько страниц с веб-сайта?


(Очень) Новичок в Python и программировании в целом

Я пытался соскрести данные с нескольких страниц/разделов одного и того же сайта с помощью Scrapy

Мой код работает, но он нечитабелен и непрактичен

import scrapy

class SomeSpider(scrapy.Spider):
name = 'some'
allowed_domains = ['https://example.com']
start_urls = [
'https://example.com/Python/?k=books&p=1',
'https://example.com/Python/?k=books&p=2',
'https://example.com/Python/?k=books&p=3',
'https://example.com/Python/?k=tutorials&p=1',
'https://example.com/Python/?k=tutorials&p=2',
'https://example.com/Python/?k=tutorials&p=3',
 ]

def parse(self, response):
  response.selector.remove_namespaces()

info1 = response.css("scrapedinfo1").extract()
info2 = response.css("scrapedinfo2").extract()

for item in zip(scrapedinfo1, scrapedinfo2):
    scraped_info = {
        'scrapedinfo1': item[0],
        'scrapedinfo2': item[1]}

    yield scraped_info


Как я могу это улучшить?

Я хотел бы искать в определенном количестве категорий и страниц

Мне нужно что-то вроде

categories = [books, tutorials, a, b, c, d, e, f] 
in a range(1,3)


Таким образом, Scrapy сможет выполнять свою работу во всех категориях и страницах, будучи при этом легко редактируемым и адаптируемым к другим сайтам

Любые идеи приветствуются

Что я уже пробовал:

categories = ["books", "tutorials"]
    base = "https://example.com/Python/?k={category}&p={index}"

    def url_generator():
        for category, index in itertools.product(categories, range(1, 4)):
            yield base.format(category=category, index=index)


Но Скрэпи возвращается
[scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)

0 Ответов