Tôi muốn scrapy thu thập trang nơi xảy ra vào liên kết tiếp theo sẽ như thế này:Làm cách nào để sử dụng CrawlSpider từ dơ bẩn để nhấp vào liên kết có javascript trênclick?
<a href="#" onclick="return gotoPage('2');"> Next </a>
sẽ scrapy có thể giải thích mã javascript về điều đó?
Với LiveHTTPHeaders phần mở rộng tôi phát hiện ra rằng kích Next tạo ra một POST với một mảnh thực sự khổng lồ của "rác" bắt đầu như thế này:
encoded_session_hidden_map=H4sIAAAAAAAAALWZXWwj1RXHJ9n
Tôi cố gắng để xây dựng nhện của tôi trên lớp CrawlSpider
, nhưng tôi thực sự không thể tìm ra cách để mã hóa nó, với BaseSpider
tôi đã sử dụng phương pháp parse()
để xử lý URL đầu tiên, mà sẽ xảy ra là một hình thức đăng nhập, nơi tôi đã làm một POST với:
def logon(self, response):
login_form_data={ 'email': '[email protected]', 'password': 'mypass22', 'action': 'sign-in' }
return [FormRequest.from_response(response, formnumber=0, formdata=login_form_data, callback=self.submit_next)]
Và sau đó tôi đã xác định submit_next() để biết phải làm gì tiếp theo. Tôi không thể tìm ra cách để cho CrawlSpider biết phương pháp nào sử dụng trên URL đầu tiên?
Tất cả yêu cầu trong thu thập thông tin của tôi, ngoại trừ yêu cầu đầu tiên, là yêu cầu POST. Họ đang xen kẽ hai loại yêu cầu: dán một số dữ liệu và nhấp vào "Tiếp theo" để chuyển đến trang tiếp theo.
Cho tôi thêm một số ngữ cảnh, không thể giải thích javascript nhưng bạn có thể bắt chước thông báo POST mà javascript gửi nếu bạn có thể tìm thấy (encoded_session_hidden_map) dưới dạng một số trường biểu mẫu ẩn hay gì đó. – Joshkunz
Thử dùng PhantomJS .. –