2012-02-29 27 views
6

Tôi đang cố gắng để viết một kịch bản đơn giản để chỉ cần kiểm tra một trang web cho một giá trị cụ thể:Chạy jQuery trên một tập tin HTML tĩnh từ Bash

$("a#infgHeader").text() == "Delivered"; 

tôi muốn tự động hóa này từ một kịch bản Bash để được chạy ở một khoảng thời gian. Tôi cũng ổn với việc sử dụng Python. Về cơ bản, tôi cần thực hiện yêu cầu HTTP, nhận phản hồi và có cách truy vấn thông minh kết quả. Có thư viện nào giúp tôi với phần truy vấn không?

Trả lời

8

Xpath là lựa chọn tuyệt vời để truy vấn html.

Something như thế này:

//a[@id='infgHeader']/@text 

Trong công cụ phát triển chrome bạn có thể sử dụng hộp tìm kiếm trong tab Elements để kiểm tra sự biểu hiện.

chạy nhanh trong terminal:

$echo '<div id="test" text="foo">Hello</div>' | xpath '//div[@id="test"]/@text' 
Found 1 nodes: 
-- NODE -- 
text="foo" 
+0

Hoan hô cho xPath! Tôi đã tự hỏi nếu nó sẽ được giúp đỡ ở đây. Tôi không biết vì HTML! = XML, nhưng hey, nếu nó hoạt động, nó hoạt động. –

+1

Cú pháp chính xác có vẻ là 'xpath -e ...'. – Tgr

+0

'xpath' hoạt động kém với mã HTML không hoàn toàn XML. Khi chạy nó trên một đoạn mã HTML 100 dòng, nó bị đóng băng trong một phút sau đó chết với một lỗi "thẻ không khớp", rõ ràng vì mã có '' và không phải là ' '. – Tgr

2

http://pypi.python.org/pypi/spynner/1.10

Spynner sẽ cho phép bạn chọn các yếu tố từ các dom sử dụng cú pháp jquery.

Hoặc có các thư viện khác cho phép bạn phân tích cú pháp HTML. BeautifulSoup, lxml

+0

Liên kết cố định: https://pypi.python.org/pypi/spynner/ –

0

Gần đây tôi đã thực hiện một cái gì đó như thế này bằng cách sử dụng nodejs + jsdom cả hai đều được ghi lại bằng hàng rào vào thấp.

0

Để phân tích cú pháp html là không nhỏ cho các trang web nói chung, vì html có thể không hảo và DOM có thể được sửa đổi bởi java script khi đang bay, vì vậy phân tích cú pháp html có thể không có ý nghĩa trong trường hợp như vậy.

Cách tốt nhất là sử dụng một trình duyệt và truy cập trực tiếp DOM, cho rằng bạn có thể sử dụng một trình duyệt không đầu như phontomjs, vì vậy bạn có thể kịch bản nó và kiểm tra bất cứ điều gì bạn cần kiểm tra

Các vấn đề liên quan