Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Curso de Scrapy

Curso de Scrapy

Facundo García Martoni

Facundo García Martoni

Utilizando XPath en el sitio de la CIA

19/27
Recursos

Aportes 19

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Update: Estoy haciendo este proyecto el 08.01.2021 y ya en la página de la CIA hay definido un robot.txt. Acá el link:

https://www.cia.gov/robots.txt

Paso a paso actualizado (08.01.2020):

El nuevo link para acceder al historical colletion es: https://www.cia.gov/readingroom/historical-collections

Por lo tanto, en consola ponemos:

scrapy shell "https://www.cia.gov/readingroom/historical-collections"

Una vez dentro del shell, ponemos:

response.xpath('//a[starts-with(@href, "collection") and (parent::h3|parent::h2)]/@href').getall()

Hice algunas comparaciones y propongo el siguiente modelo de busqueda ya que con el propuesto se pierden algunos links que estan dentro de una etiqueta <p> y para eliminar los links repetidos hacemos un cast a un set

set(response.css('a[href^=collection]::attr(href)').getall())

Este proyecto necesita al menos un texto de actualización por lo de que el sitio de la CIA ya tiene robots.txt

También se puede usar la expresión xpath

//div[@class="field-item even"]/*[self::h2 or self::h3]/a/@href

El paso a paso

En la página de la CIA https://www.cia.gov/library/readingroom/historical-collections

Y en la consola:

$ scrapy shell "https://www.cia.gov/library/readingroom/historical-collections"

Y ya dentro del entorno de Python

>>> response.xpath('//a[starts-with(@href, "collection") and (parent
::h3|parent::h2)]/@href').getall()

Tener en cuenta:

User-agent: Mediapartners-Google*
Disallow: /

User-agent: bingbot
Disallow: /

User-agent: msnbot
Disallow: /

User-agent: IsraBot
Disallow: /

User-agent: Orthogaffe
Disallow: /

User-agent: UbiCrawler
Disallow: /

User-agent: DOC
Disallow: /

User-agent: Zao
Disallow: /

User-agent: sitecheck.internetseer.com
Disallow: /

User-agent: Zealbot
Disallow: /

User-agent: MSIECrawler
Disallow: /

User-agent: SiteSnagger
Disallow: /

User-agent: WebStripper
Disallow: /

User-agent: WebCopier
Disallow: /

User-agent: Fetch
Disallow: /

User-agent: Offline Explorer
Disallow: /

User-agent: Teleport
Disallow: /

User-agent: TeleportPro
Disallow: /

User-agent: WebZIP
Disallow: /

User-agent: linko
Disallow: /

User-agent: HTTrack
Disallow: /

User-agent: Microsoft.URL.Control
Disallow: /

User-agent: Xenu
Disallow: /

User-agent: larbin
Disallow: /

User-agent: libwww
Disallow: /

User-agent: ZyBORG
Disallow: /

User-agent: Download Ninja
Disallow: /

User-agent: wget
Disallow: /

User-agent: grub-client
Disallow: /

User-agent: k2spider
Disallow: /

User-agent: NPBot
Disallow: /

User-agent: WebReaper
Disallow: /

User-agent: *
Disallow: /js/
Disallow: /preview/
Disallow: /*.js$
Disallow: /*.js.map$
Disallow: /*.json$
Sitemap: https://www.cia.gov/sitemap.xml
Sitemap: https://www.cia.gov/the-world-factbook/sitemap.xml
Host: https://www.cia.gov

También en la página del gobierno de mi país (México) no tiene robots.txt.

ya existe el archivo robots.txt de CIA
https://www.cia.gov/robots.txt

scrapy shell "https://www.cia.gov/readingroom/historical-collections"
response.xpath('//a[starts-with(@href, "collection") and (parent::h3|parent::h2)]/@href').getall()

Actualización XPath 02/01/2022

//div[@class = “field-item even”]/h3/a/@href

La Agencia Central de Inteligencia (CIA, por su sigla en inglés) es una entidad independiente del Gobierno de Estados Unidos encargada de la recopilación, análisis y uso de información y servicios de inteligencia para asistir al presidente del país y sus asesores en la toma de decisiones relacionadas a la seguridad

Si alguien me pudiera ayudar con este error, gracias. No puedo usar el scrapy shell.

¿Como se actualiza scrapy 1.x a 2.x en Ubuntu 20.04 desde la terminal? Gracias

Un dato interesante y curioso a fecha 23/01/2021 es que hay un articulo llamado “Intelligence, Policy, and Politics: The DCI, the White House, and Congress” que por alguna razón la letra “I” va a un articulo distinto que el resto del texto, para hacerme entender mejor dejo imágenes:
⠀

⠀
La I en la imágen anterior está sola, y en la siguiente imágen aparecen el resto
⠀

⠀
Y aquí dejo el código html:
⠀

⠀
Como dato a destacar: EL link al que referencia la “I” es un link a lo que creo que es un articulo de la versión antigua de la web.

AFIP y aduana Argentina no tienen robots.txt

el mejor proyecto del curso genial !!