Я написал крошечный скребок на python scrapy для анализа разных имен с веб-страницы. Страница прошла еще 4 страницы с помощью нумерации страниц. Всего имен на страницах 46, но он вычищает 36 имен.
Предполагается, что парсер пропускает содержимое первых целевых страниц, но, используя аргумент parse_start_url
в моем парсере, я обработал его.
Однако проблема, с которой я столкнулся в данный момент с этим парсером, заключается в том, что он на удивление пропускает содержимое второй страницы и анализирует все остальное, я имел в виду первую страницу, третью страницу, четвертую страницу и так далее. Почему это происходит и как с этим бороться? Заранее спасибо.
Вот сценарий, который я пытаюсь использовать:
import scrapy
class DataokSpider(scrapy.Spider):
name = "dataoksp"
start_urls = ["https://data.ok.gov/browse?page=1&f[0]=bundle_name%3ADataset&f[1]=im_field_categories%3A4191"]
def parse(self, response):
for link in response.css('.pagination .pager-item a'):
new_link = link.css("::attr(href)").extract_first()
yield scrapy.Request(url=response.urljoin(new_link), callback=self.target_page)
def target_page(self, response):
parse_start_url = self.target_page # I used this argument to capture the content of first page
for titles in response.css('.title a'):
name = titles.css("::text").extract_first()
yield {'Name':name}