Tôi đã viết nhiều mẩu tin lưu niệm nhưng tôi không thực sự chắc chắn cách xử lý các thanh cuộn vô hạn. Những ngày này hầu hết các trang web vv, Facebook, Pinterest có cuộn vô hạn.các trang web cạo với cuộn vô hạn
Trả lời
Bạn có thể sử dụng selen để xóa trang web cuộn vô hạn như twitter hoặc facebook.
Bước 1: Cài đặt Selenium sử dụng pip
pip install selenium
Bước 2: sử dụng mã dưới đây để tự động cuộn vô hạn và trích xuất mã nguồn
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import sys
import unittest, time, re
class Sel(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = "https://twitter.com"
self.verificationErrors = []
self.accept_next_alert = True
def test_sel(self):
driver = self.driver
delay = 3
driver.get(self.base_url + "https://stackoverflow.com/search?q=stckoverflow&src=typd")
driver.find_element_by_link_text("All").click()
for i in range(1,100):
self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(4)
html_source = driver.page_source
data = html_source.encode('utf-8')
if __name__ == "__main__":
unittest.main()
Bước 3: In dữ liệu nếu cần thiết.
Vòng lặp có nghĩa là chúng ta cuộn xuống 100 lần không? trong đó 100 là số được chọn ngẫu nhiên. Có đúng không? –
@satarupa Bạn nói đúng là cuộn xuống 100 lần –
Hầu hết các trang web có cuộn vô hạn làm (như ghi chú Lattyware) đều có API thích hợp, và bạn có thể sẽ được phục vụ tốt hơn bằng cách sử dụng này thay vì cạo.
Nhưng nếu bạn phải cạo ...
trang web như vậy được sử dụng JavaScript để yêu cầu nội dung bổ sung từ trang web khi bạn đạt đến dưới cùng của trang. Tất cả những gì bạn cần làm là tìm ra URL của nội dung bổ sung đó và bạn có thể truy xuất nó. Tìm ra URL cần thiết có thể được thực hiện bằng cách kiểm tra kịch bản, bằng cách sử dụng giao diện điều khiển Web Firefox hoặc bằng cách sử dụng debug proxy.
Ví dụ: mở Bảng điều khiển Web Firefox, tắt tất cả các nút bộ lọc ngoại trừ Net và tải trang web bạn muốn xóa. Bạn sẽ thấy tất cả các tệp khi chúng được tải. Cuộn trang trong khi xem Bảng điều khiển Web và bạn sẽ thấy các URL đang được sử dụng cho các yêu cầu bổ sung. Sau đó, bạn có thể tự yêu cầu URL đó và xem định dạng dữ liệu trong (có thể là JSON) và đưa nó vào tập lệnh Python của bạn.
Bạn có thể đưa ra ví dụ cụ thể về cách thực hiện không? – tatsuhirosatou
Tôi đã thêm một số chi tiết, hy vọng nó sẽ giúp! – kindall
Tìm url của nguồn ajax sẽ là tùy chọn tốt nhất nhưng nó có thể cồng kềnh đối với một số trang web nhất định. Hoặc bạn có thể sử dụng trình duyệt không đầu như QWebKit
từ PyQt
và gửi các sự kiện bàn phím trong khi đọc dữ liệu từ cây DOM. QWebKit
có api đẹp và đơn giản.
- 1. cuộn vô hạn nhẹ với backbone.js
- 2. NSScrollXem cuộn vô hạn/vô hạn | subview reuse
- 3. Bing tìm kiếm hình ảnh phân trang - vô hạn cuộn
- 4. Cuộn ngang vô hạn UIScrollView
- 5. Cạo các trang web đã bật Javascript?
- 6. jquery cuộn vô hạn "thiết lập lại"
- 7. Cạo một trang web động
- 8. Cạo Toàn bộ Trang web
- 9. Cuộn "vô hạn" Javascript cho nội dung hữu hạn?
- 10. UITableView với tính năng cuộn vô hạn và tải chậm
- 11. ngăn chặn trùng lặp vô hạn cuộn ajax loader
- 12. Cạo "xem trước" trang web - Python
- 13. cuộn vô hạn thủ công kích hoạt
- 14. Jquery, Jcarousel cuộn vô hạn mịn
- 15. mô phỏng cuộn vô hạn trong C# để nhận được html đầy đủ của một trang
- 16. Cạo trang ajax web với trăn và/hoặc scrapy
- 17. Cạo nội dung trang web Với Đăng nhập An toàn
- 18. Cạo các trang web yêu cầu đăng nhập bằng Python
- 19. Facebook đạt được cuộn vô hạn như thế nào?
- 20. Firefox 6 Trang Vô hạn Làm mới Với Trang Với Thẻ băm
- 21. CasperJS không thể kích hoạt cuộn vô hạn twitter
- 22. d3.js chuỗi thời gian cuộn vô hạn
- 23. Cuộn vô hạn danh sách qtXem trong QML
- 24. giới hạn cuộn ở chân trang
- 25. Cách đặt lại cuộn vô hạn với nội dung ajax mới
- 26. Danh sách vô hạn các quầy vô hạn
- 27. kích hoạt vô hạn cuộn khi không có đủ nội dung cho thanh cuộn trên tải trang
- 28. Cách triển khai cuộn vô tận/vô hạn trong DIV trong Javascript/jQuery
- 29. đến cùng vị trí khi quay lại với cuộn vô hạn
- 30. Cách tạo chế độ xem cuộn vô hạn trong iPhone?
Đặt cược tốt nhất của bạn ở đây là sử dụng các API của trang web đó - đó sẽ là, cho đến nay, tùy chọn dễ dàng và đáng tin cậy nhất. Ngoài ra, bạn sẽ phải xử lý JavaScript, về cơ bản có nghĩa là chạy một trình duyệt hoàn chỉnh - các thư viện đó tồn tại. –
nghe như mô phỏng, bạn có thể chỉ ra một số ví dụ về xử lý jscript –