Я создал паука, который успешно извлекает нужные мне данные с одной страницы, теперь мне нужно, чтобы он сканировал несколько похожих страниц и делал то же самое.
Стартовая страница будет эта , здесь перечислены многие уникальные предметы из игры (араку тики, sidhbreath и т. Д.), Я хочу, чтобы паук просканировал все эти предметы.
Учитывая, что в качестве стартовой страницы, как определить, по каким ссылкам следовать?
Вот xpaths для первых 3 ссылок, по которым я хочу перейти:
//*[@id="mw-content-text"]/div[3]/table/tbody/tr[1]/td[1]/span/span[1]/a[1]
//*[@id="mw-content-text"]/div[3]/table/tbody/tr[2]/td[1]/span/span[1]/a[1]
//*[@id="mw-content-text"]/div[3]/table/tbody/tr[3]/td[1]/span/span[1]/a[1]
Как вы можете видеть, в середине увеличивается число, 1, затем 2, затем 3 и так далее. Как сканировать эти страницы?
Вот фрагмент моего кода, работающего для первого элемента, Араку Тики, с начальной страницей:
import scrapy
from PoExtractor.items import PoextractorItem
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
class RedditSpider(scrapy.Spider):
name = "arakaali"
# allowed_domains = ['pathofexile.gamepedia.com']
start_urls = ['https://pathofexile.gamepedia.com/Araku_Tiki']
rules = (
Rule(LinkExtractor(allow=(), restrict_xpaths=()), callback="parse",
follow=True),
)
def parse(self, response):
item = PoextractorItem()
item["item_name"] = response.xpath("//*[@id='mw-content-text']/span/span[1]/span[1]/text()[1]").extract()
item["flavor_text"] = response.xpath("//*[@id='mw-content-text']/span/span[1]/span[2]/span[3]/text()").extract()
yield item
Обратите внимание: я не могу заставить его перейти по всем ссылкам на стартовой странице, мой код работает только в том случае, если стартовая страница содержит запрашиваемые данные.
Заранее благодарим за каждый ответ.