Tôi đang sử dụng Python và Scrapy cho câu hỏi này.Tôi làm cách nào để sử dụng Scrapy để thu thập thông tin trong các trang?
Tôi đang cố gắng thu thập trang web Một, trong đó có chứa một danh sách các liên kết đến các trang web B1, B2, B3, ... Mỗi B trang chứa một liên kết đến một trang khác, C1, C2, C3, ..., chứa hình ảnh.
Vì vậy, sử dụng Scrapy, ý tưởng trong pseudo-code là:
links = getlinks(A)
for link in links:
B = getpage(link)
C = getpage(B)
image = getimage(C)
Tuy nhiên, tôi đang chạy vào một vấn đề khi cố gắng phân tích nhiều hơn một trang trong Scrapy. Đây là mã của tôi:
def parse(self, response):
hxs = HtmlXPathSelector(response)
links = hxs.select('...')
items = []
for link in links:
item = CustomItem()
item['name'] = link.select('...')
# TODO: Somehow I need to go two pages deep and extract an image.
item['image'] = ....
Tôi sẽ làm gì?
(Lưu ý: Câu hỏi của tôi cũng tương tự như Using multiple spiders at in the project in Scrapy nhưng tôi không chắc chắn làm thế nào để "trở lại" giá trị từ đối tượng Request Scrapy của.)
Cảm ơn, điều này thật tuyệt vời. Nếu tôi muốn tạo 'CustomItem' trong phương thức' parse', tôi có thể truyền nó bằng cách sử dụng thuộc tính meta không? – sdasdadas
Ngoài ra, tôi muốn trả về một danh sách các mục ('items = []'). Làm thế nào tôi sẽ sử dụng ở trên và sau đó, sau khi hoàn thành của nó, gắn thêm mục vào danh sách? – sdasdadas
Chức năng chỉ có nhện là truy cập một trang, trích xuất và trả về dữ liệu (mục cuối cùng của mục lợi nhuận). Để tổng hợp dữ liệu, giống như đặt tất cả các mục trong một danh sách, bạn cần tạo một hàm trong mô-đun 'pipelines' (đây chỉ là một quy ước). [Đường dẫn ví dụ này] (https://github.com/bcap/wikipedia-music/blob/master/crawler/crawler/pipelines.py) tạo tệp chấm dựa trên tất cả các thể loại nhạc được thu thập thông tin –