mac for follow example docs scrapy

scrapy - for - ¿Cómo generar los start_urls dinámicamente en el rastreo?



scrapy python 3 (2)

Hay dos preguntas:

1) sí, puede realizar esta funcionalidad utilizando Reglas, por ejemplo,

rules =(Rule(SgmlLinkExtractor(allow = (''node_/d+.htm'')) ,callback = ''parse''))

Lectura sugerida

2) sí, puedes generar start_urls dinámicamente, start_urls es un

lista

por ejemplo, >>> start_urls = [''http://www.a.com/%d_%d_%d'' %(n,n+1,n+2) for n in range(0, 26)]

>>> start_urls [''http://www.a.com/0_1_2'', ''http://www.a.com/1_2_3'', ''http://www.a.com/2_3_4'', ''http://www.a.com/3_4_5'', ''http://www.a.com/4_5_6'', ''http://www.a.com/5_6_7'', ''http://www.a.com/6_7_8'', ''http://www.a.com/7_8_9'', ''http://www.a.com/8_9_10'',''http://www.a.com/9_10_11'', ''http://www.a.com/10_11_12'', ''http://www.a.com/11_12_13'', ''http://www.a.com/12_13_14'', ''http://www.a.com/13_14_15'', ''http://www.a.com/14_15_16'', ''http://www.a.com/15_16_17'', ''http://www.a.com/16_17_18'', ''http://www.a.com/17_18_19'', ''http://www.a.com/18_19_20'', ''http://www.a.com/19_20_21'', ''http://www.a.com/20_21_22'', ''http://www.a.com/21_22_23'', ''http://www.a.com/22_23_24'', ''http://www.a.com/23_24_25'', ''http://www.a.com/24_25_26'', ''http://www.a.com/25_26_27'']

Estoy rastreando un sitio, que puede contener muchos start_urls como http://www.a.com/list_1_2_3.htm .

Quiero rellenar start_urls como [list_ / d + / d + / d + .htm], y extraer elementos de urls como [node_ / d + .htm] durante el rastreo.

¿Puedo usar CrawlSpider para realizar esta función? ¿Y cómo puedo generar los start_urls dinámicamente en el rastreo?

¡Muchas gracias!


La mejor manera de generar URL dinámicamente es anular el método start_requests de la araña:

from scrapy.http.request import Request def start_requests(self): with open(''urls.txt'', ''rb'') as urls: for url in urls: yield Request(url, self.parse)