lấy HTML bằng Python
Chào mọi người Hiện mình đang gặp một ít khó khăn là mình muốn lấy dữ liệu vào ngày hiện tại của một trang web bằng Python. Quy trình xử lý mình dự định: Lấy html của web -> Lấy vùng giá trị dữ liệu (tag chứa dữ liệu) -->Lấy chính xác dữ liệu Nhưng mà giao diện trang web sẽ có một ô nhập ngày muốn xem vào, nên lúc mình sử dụng Ctrl + U để xem thì không có dữ liệu mình cần tìm mà hiện dữ liệu chung chung. Mình có inspect kỹ hơn chỗ nhập ngày (trong trang web) thì đoạn htmt đó gắn tag là input: <input id = "txttungay" placeholder = "Ngày" Class = ''...'' size ''...'' type ''text'' value = "...">. Bây giờ mình nên làm sao để nhập ngày vào, và trả về đoạn dữ liệu html của ngày hôm đó. Mình đang thử requests Mình mới nghiên cứu về html nên có thể sai sót vài chỗ
2 CÂU TRẢ LỜI
Sau bước nhập thông tin vào ô input đó, bạn xem trang web đó gửi request đến đâu, params, headers, cookie như thế nào(trong tab network). Đây chính là request mà bạn cần nghiên cứu, thay vì tìm cách nhập đc thông tin vào ô input và bấm submit thì tìm cách call request/api mà trang đó đang dùng.
Trong trường hợp bạn vẫn muốn nhập thì có thể dùng các headless browser driver để làm hành động nhập input, click submit.. rồi crawl dữ liệu. Ví dụ như puppeteer, playwright...
Bạn thử tìm hiểu về selenium python nhé.
Để nhập ngày vào thì bạn dùng hàm send_keys
text_input = driver.find_element_by_id('txttungay')
text_input.send_keys(date)
Nếu cần nhấn nút nào đó để load dữ liệu thì bạn tìm đến nút đó và gọi làm click()
.
Còn nếu việc thực hiện load dữ liệu xảy ra lúc txttungay onchange mà đoạn code trên không hoạt động thì bạn gửi thêm Keys.TAB
vào text_input nhé. Nhớ from selenium.webdriver.common.keys import Keys
Sau đó bạn cho sleep 1 thời gian hợp lý để load dữ liệu xong rồi xử lý