2012-02-17 164 views
20

Tôi đang thu thập dữ liệu trang web, có thể chứa rất nhiều start_urls như http://www.a.com/list_1_2_3.htm.Cách tạo start_urls động trong thu thập thông tin?

Tôi muốn cư start_urls như [list_ \ d + \ d + \ d + .htm], và trích xuất các mặt hàng từ các url như [node_ \ d + .htm] trong bò.

Tôi có thể sử dụng CrawlSpider để nhận ra chức năng này không? Và làm thế nào tôi có thể tạo start_urls năng động trong thu thập thông tin?

Cảm ơn rất nhiều!

+2

http: // stackoverflow .com/q/8798235/ – warvariuc

+0

Thông tin thêm về start_requests http://doc.scrapy.org/en/latest/topics/spiders.html#scrapy.spiders.Spider. start_requests – briankip

Trả lời

12

Có hai câu hỏi:

1) có bạn có thể nhận ra chức năng này bằng cách sử dụng Quy định ví dụ,

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

suggested reading

2) có bạn có thể tạo ra start_urls động, start_urls là một

danh sách

ví dụ >>> 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'] 
+0

Cảm ơn bạn đã trả lời. Nhưng tôi muốn tạo start_urls trong khi thu thập dữ liệu: khi tôi gặp url như 'http://www.a.com/%d_%d_%d', tôi thêm nó vào start_urls. Tôi không thể xác nhận phạm vi của start_urls lúc đầu tiên ... – user1215269

+0

như tôi biết, scrapy add start_urls Yêu cầu trong bộ lập lịch khi bắt đầu thu thập thông tin nếu bạn thêm bất kỳ url nào trong danh sách start_urls trong khi thu thập thông tin sẽ không được thực thi. –

38

Cách tốt nhất để tạo ra các URL động là để ghi đè lên 'start_requests' phương pháp của nhện:

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) 
Các vấn đề liên quan