Articles of picante

Scrapy: Cómo imprimir la referencia de solicitud

¿Es posible obtener la referencia de solicitud del objeto de respuesta en la función de análisis? 10x

Scrapy: ¿por qué mi objeto de respuesta no tiene un método body_as_unicode?

Escribí una araña, que funcionó shinymente la primera vez. La segunda vez que intenté ejecutarlo, no se aventuró más allá de start_urls . Intenté fetch la url en scrapy shell y crear un objeto HtmlXPathSelector partir de la respuesta devuelta. Ahí es cuando me salió el error. Así que los pasos fueron: [scrapy shell] fetch(‘http://example.com’) […]

Cómo desechar texto incluido entre varias tags usando scrapy

Estoy tratando de desechar la descripción del producto de este enlace . Pero, ¿cómo puedo desechar todo el texto, incluido el texto entre tags Aquí está el objeto hxs.select(‘//div[@class=”overview”]/div/text()’).extract() pero el HTML original: These classic sneakers from Puma are best known for their neat and simple design. These basketball shoes are crafted by novel tooling […]

¿Por qué mi spy spider no está siguiendo la función de callback en mi función de análisis de elementos?

Estoy raspando un sitio para verificar el estado en stock de varios productos. Desafortunadamente, esto requiere realmente hacer clic en “Agregar al carrito” en la página del producto y revisar el mensaje de la página siguiente para determinar si hay stock disponible (es decir, requiere analizar dos respuestas). Seguí la excelente documentación para este escenario […]

Ejecutando Scrapy desde un script con salida de archivo

Actualmente estoy usando Scrapy con los siguientes argumentos de la línea de comando: scrapy crawl my_spider -o data.json Sin embargo, prefiero ‘guardar’ este comando en un script de Python. Siguiendo https://doc.scrapy.org/en/latest/topics/practices.html , tengo el siguiente script: import scrapy from scrapy.crawler import CrawlerProcess from apkmirror_scraper.spiders.sitemap_spider import ApkmirrorSitemapSpider process = CrawlerProcess({ ‘USER_AGENT’: ‘Mozilla/4.0 (compatible; MSIE 7.0; Windows […]

Uso de Scrapy para buscar y descargar archivos pdf de un sitio web

Se me ha encomendado la tarea de extraer archivos pdf de sitios web que utilizan Scrapy. No soy nuevo en Python, pero Scrapy es muy nuevo para mí. He estado experimentando con la consola y algunas arañas rudimentarias. He encontrado y modificado este código: import urlparse import scrapy from scrapy.http import Request class pwc_tax(scrapy.Spider): name […]

Scrapy sobrescribe archivos json en lugar de agregar el archivo

¿Hay alguna manera de sobrescribir el archivo mencionado en lugar de agregarlo? Ejemplo) scrapy crawl myspider -o “/path/to/json/my.json” -t json scrapy crawl myspider -o “/path/to/json/my.json” -t json Agregará el archivo my.json en lugar de sobrescribirlo.

¿Cómo establecer dinámicamente las reglas de Scrapy?

Tengo una clase que ejecuta algún código antes de la inicialización: class NoFollowSpider(CrawlSpider): rules = ( Rule (SgmlLinkExtractor(allow=(“”, ),), callback=”parse_items”, follow= True), ) def __init__(self, moreparams=None, *args, **kwargs): super(NoFollowSpider, self).__init__(*args, **kwargs) self.moreparams = moreparams Estoy ejecutando este código desechable con el siguiente comando: > scrapy runspider my_spider.py -a moreparams=”more parameters” -o output.txt Ahora, quiero que […]

La forma más fácil de ejecutar el rastreador desechable para que no bloquee el script

Los documentos oficiales ofrecen muchas maneras de ejecutar rastreadores scrapy desde el código: import scrapy from scrapy.crawler import CrawlerProcess class MySpider(scrapy.Spider): # Your spider definition … process = CrawlerProcess({ ‘USER_AGENT’: ‘Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)’ }) process.crawl(MySpider) process.start() # the script will block here until the crawling is finished Pero todos ellos bloquean […]

Scrapy start_urls

El script (a continuación) de este tutorial contiene dos start_urls . from scrapy.spider import Spider from scrapy.selector import Selector from dirbot.items import Website class DmozSpider(Spider): name = “dmoz” allowed_domains = [“dmoz.org”] start_urls = [ “http://www.dmoz.org/Computers/Programming/Languages/Python/Books/”, “http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/”, ] def parse(self, response): “”” The lines below is a spider contract. For more info see: http://doc.scrapy.org/en/latest/topics/contracts.html @url http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/ […]