Я пытаюсь перебрать всех глав государств (COS) на сайте ЦРУ. Там должно быть около 5800 cos. Тем не менее, мой l oop, похоже, не получает всю страну. Буду признателен за любую помощь.
Я сделал это с BS4, и он работал отлично. Но так как все, похоже, поддерживают пропаганду и уважение к веб-сайтам (например, поиск robots.txt), я подумал, что должен повторить мой сценарий bs4 с помощью scrapy.
Цель: очистить все записи всех стран, включая дату изменения. Стартовая страница: https://www.cia.gov/library/publications/world-leaders-1/
Пример страницы: https://www.cia.gov/library/publications/world-leaders-1/AF.html
Здесь я нахожусь:
class spdrCIA_cos(scrapy.Spider):
name = "cos"
allowed_domains = ['www.cia.gov']
start_urls = ['https://www.cia.gov/library/publications/resources/world-leaders-1/']
def parse(self, response):
hrefs = response.xpath("//div[@id='cosAlphaList']/ul/li/a/@href").getall()
for href in hrefs:
nextpage = response.urljoin(href)
yield scrapy.Request(nextpage, callback=self.parse_cos)
def parse_cos(self, response):
# IMPORT COLUMN HEADERS FROM 'ITEMS.PY'
items = cosScrapeItem()
cos_list = response.xpath("//li[contains(@id,'cosid')]").getall()
for cos in cos_list:
raw_dateMod = response.xpath(".//span[@id='lastUpdateDate']/text()").extract_first().strip()
items["dateMod"] = datetime.strptime(raw_dateMod, "%d %b %Y").strftime("%Y/%m/%d")
items["dateAdd"] = date.today().strftime("%Y/%m/%d")
items["Country"] = response.xpath(".//td[@class='countryName']/span/text()").extract_first()
yield items
Несмотря на то, что у меня пока нет кода для очистки названий и имен, у меня уже есть какая-то проблема с перетаскиванием всех стран.