Как очистить несколько страниц с веб-сайта?
(Очень) Новичок в 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)