Trả lời

24

Về mặt kỹ thuật, màn hình là bất kỳ chương trình nào lấy dữ liệu hiển thị của chương trình khác và nhập dữ liệu đó để sử dụng riêng.

Khá thường xuyên, cảnh màn hình đề cập đến ứng dụng khách web phân tích cú pháp các trang HTML của trang web được nhắm mục tiêu để trích xuất dữ liệu được định dạng. Điều này được thực hiện khi một trang web không cung cấp nguồn cấp dữ liệu RSS hoặc API REST để truy cập dữ liệu theo cách có lập trình.

Một ví dụ về thư viện được sử dụng cho mục đích này là Hpricot đối với Ruby, một trong những trình phân tích cú pháp HTML được cấu trúc tốt hơn được sử dụng để sàng lọc màn hình.

+0

điều này có thực sự phân tích url của video trong một trang không? và bạn thực sự có thể lấy url của video và đặt nó vào iframe? – Vincent

+0

Nó luôn phụ thuộc vào cấu trúc của trang được phân tích cú pháp. Đôi khi các tài nguyên đó được ẩn/bảo vệ chống lại mục đích tháo dỡ. Nhưng nói chung người ta có thể nhận được url tài nguyên cần thiết. – hypers

2

Trình quét màn hình tải xuống trang html và kéo dữ liệu quan tâm bằng cách tìm kiếm mã thông báo đã biết hoặc phân tích cú pháp đó dưới dạng XML hoặc một số loại như vậy.

2

Bạn có trang HTML chứa một số dữ liệu bạn muốn. Những gì bạn làm là bạn viết một chương trình sẽ tìm nạp trang web đó và cố gắng trích xuất dữ liệu đó. Điều này có thể được thực hiện với các trình phân tích cú pháp XML, nhưng đối với các ứng dụng đơn giản, tôi thích sử dụng các biểu thức chính quy để phù hợp với một vị trí cụ thể trong HTML và trích xuất các dữ liệu cần thiết. Đôi khi nó có thể được khôn lanh để tạo ra một biểu thức chính quy tốt, mặc dù, bởi vì HTML xung quanh xuất hiện nhiều lần trong tài liệu. Bạn luôn muốn kết hợp một mục duy nhất gần với dữ liệu bạn cần.

7

Nói chung, trình quét màn hình là chương trình ghi lại đầu ra từ chương trình máy chủ bằng cách bắt chước hành động của người ngồi trước máy trạm bằng trình duyệt hoặc chương trình truy cập đầu cuối. tại một số điểm chính chương trình sẽ giải thích đầu ra và sau đó thực hiện một hành động hoặc trích xuất một lượng thông tin nhất định từ đầu ra.

Ban đầu điều này được thực hiện với các đầu ra ký tự/đầu cuối từ các khung chính để trích xuất dữ liệu hoặc cập nhật các hệ thống cũ hoặc không thể truy cập trực tiếp đến người dùng cuối. theo thuật ngữ hiện đại, nó thường có nghĩa là phân tích cú pháp đầu ra từ một yêu cầu HTTP để trích xuất dữ liệu hoặc thực hiện một số hành động khác. với sự ra đời của các dịch vụ web loại điều này nên đã chết đi, nhưng không phải tất cả các ứng dụng cung cấp một api tốt đẹp để tương tác với.

2

Nếu bạn quan tâm đến các công cụ cụ thể cho tác vụ này, here là câu hỏi trước thảo luận về chúng.

2

Trong những ngày đầu của máy tính, màn hình chọc ghẹo sẽ mô phỏng thiết bị đầu cuối (ví dụ: IBM 3270) và giả vờ là người dùng để trích xuất tương tác, cập nhật thông tin trên máy tính lớn. Trong thời gian gần đây, khái niệm này được áp dụng cho bất kỳ ứng dụng nào cung cấp giao diện thông qua các trang web.

Với sự xuất hiện của SOA, màn hình là cách thuận tiện để các dịch vụ cho phép các ứng dụng không hoạt động. Trong những trường hợp đó, trang web cạo là cách tiếp cận phổ biến hơn được thực hiện.

13

Rất nhiều câu trả lời chính xác tại đây.

Điều không ai nói là không làm điều đó!

Cạo màn hình là những gì bạn làm khi không ai cung cấp cho bạn giao diện có thể đọc được hợp lý. Thật khó để viết và giòn.

Ví dụ, hãy xem xét một trình tổng hợp RSS, sau đó xem xét mã nhận cùng thông tin bằng cách làm việc thông qua giao diện blog thông thường của con người. Điều gì sẽ xảy ra khi blogger quyết định thay đổi bố cục của họ?

Tất nhiên, đôi khi bạn không có lựa chọn :(

+0

Tôi không thể nói nếu bạn đang nói về tôi hoặc 'vắng mặt của bất cứ ai'. :-) –

+0

LOL! Tôi nghĩ anh ấy đang nói đến bạn. Và tôi không nghĩ rằng bạn đã từng nói điều đó. Anh ta nên bị tát. – Micah

2

Dưới đây là một chút nhỏ bé của màn hình scraping thực hiện trong Javascript, sử dụng jQuery (không phải là một lựa chọn phổ biến, tâm trí bạn, vì cào thường là một hoạt động client-server):

//Show My SO Reputation Score 
var repval = $('span.reputation-score:first'); alert('StackOverflow User "' + repval.prev().attr('href').split('/').pop() + '" has (' + repval.html() + ') Reputation Points.'); 

Nếu bạn chạy Firebug, sao chép mã ở trên và paste it into the Console và xem nó hoạt động ngay tại đây trên trang Câu hỏi này.

Nếu SO thay đổi tên cấu trúc/tên lớp phần tử/quy ước đường dẫn URI, tất cả các phiên cược sẽ bị tắt và không hoạt động nữa - đó là rủi ro thông thường trong nỗ lực cạo màn hình khi không có hợp đồng/sự hiểu biết giữa các bên (scraper và scrapee [vâng tôi vừa phát minh ra một từ]).

2

Về mặt kỹ thuật, màn hình là bất kỳ chương trình nào lấy dữ liệu hiển thị của một chương trình khác và nhập dữ liệu đó cho mục đích sử dụng riêng của nó.Trong những ngày đầu của máy tính, màn hình máy quét sẽ mô phỏng thiết bị đầu cuối (ví dụ: IBM 3270) và giả vờ là người dùng để trích xuất tương tác, cập nhật thông tin trên máy tính lớn. Trong thời gian gần đây, khái niệm này được áp dụng cho bất kỳ ứng dụng nào cung cấp giao diện thông qua các trang web.

Với sự xuất hiện của SOA, màn hình là cách thuận tiện để các dịch vụ cho phép các ứng dụng không hoạt động. Trong những trường hợp đó, trang web cạo là cách tiếp cận phổ biến hơn được thực hiện.

Khá thường xuyên, cảnh màn hình đề cập đến ứng dụng khách web phân tích cú pháp các trang HTML của trang web được nhắm mục tiêu để trích xuất dữ liệu được định dạng. Điều này được thực hiện khi một trang web không cung cấp nguồn cấp dữ liệu RSS hoặc API REST để truy cập dữ liệu theo cách có lập trình.

Thông thường Bạn có một trang HTML có chứa một số dữ liệu bạn muốn. Những gì bạn làm là bạn viết một chương trình sẽ tìm nạp trang web đó và cố gắng trích xuất dữ liệu đó. Điều này có thể được thực hiện với các trình phân tích cú pháp XML, nhưng đối với các ứng dụng đơn giản, tôi thích sử dụng các biểu thức chính quy để phù hợp với một vị trí cụ thể trong HTML và trích xuất các dữ liệu cần thiết. Đôi khi nó có thể được khôn lanh để tạo ra một biểu thức chính quy tốt, mặc dù, bởi vì HTML xung quanh xuất hiện nhiều lần trong tài liệu. Bạn luôn muốn kết hợp một mục duy nhất gần với dữ liệu bạn cần.

Cạo màn hình là những gì bạn làm khi không ai cung cấp cho bạn giao diện có thể đọc được hợp lý. Thật khó để viết và giòn.

Ví dụ, hãy xem xét một trình tổng hợp RSS, sau đó xem xét mã nhận cùng thông tin bằng cách làm việc thông qua giao diện blog thông thường của con người. Mà một trong những phá vỡ khi các blogger quyết định thay đổi bố trí của họ.

Một ví dụ về thư viện được sử dụng cho mục đích này là Hpricot cho Ruby, một trong những trình phân tích cú pháp HTML được cấu trúc tốt hơn được sử dụng để sàng lọc màn hình.

2

Cạo màn hình là những gì bạn làm khi không ai cung cấp cho bạn giao diện có thể đọc được hợp lý. Thật khó để viết và giòn.

Không hoàn toàn đúng sự thật.Tôi không nghĩ rằng tôi đang phóng đại khi tôi nói rằng hầu hết các nhà phát triển không có đủ kinh nghiệm để viết API decents. Tôi đã làm việc với các công ty sàng lọc màn hình và thường là các API rất có vấn đề (từ lỗi khó hiểu đến kết quả xấu) và thường không cung cấp đầy đủ chức năng mà trang web cung cấp có thể tốt hơn để sàng lọc màn hình (web scrape nếu bạn sẽ). Cổng thông tin extranet/trang web được sử dụng nhiều khách hàng/người môi giới hơn các ứng dụng API và do đó được hỗ trợ tốt hơn. Trong các công ty lớn thay đổi cổng thông tin extranet vv .. là không thường xuyên, thường vì nó ban đầu được thuê ngoài và bây giờ nó chỉ được duy trì. Tôi giới thiệu nhiều hơn về việc cạo màn hình trong đó đầu ra được điều chỉnh, ví dụ: chuyến bay trên tuyến đường và thời gian cụ thể, báo giá bảo hiểm, báo giá vận chuyển, v.v.

Về mặt thực hiện, nó có thể đơn giản như khách hàng web để kéo nội dung trang vào chuỗi và sử dụng hàng loạt thông thường biểu thức để trích xuất thông tin bạn muốn.

string pageContents = new WebClient("www.stackoverflow.com").DownloadString(); 
int numberOfPosts = // regex match 

Rõ ràng là trong môi trường có quy mô lớn, bạn sẽ viết mã mạnh hơn so với ở trên.

Một scraper màn hình tải các trang html , và rút ra các dữ liệu quan tâm bằng cách tìm kiếm tokens biết hoặc phân tích nó như XML hoặc một số ví dụ.

Đó là cách tiếp cận rõ ràng hơn so với regex ... trong lý thuyết .., tuy nhiên trong thực tế, nó không dễ dàng, vì hầu hết các tài liệu sẽ cần chuẩn hóa XHTML trước khi bạn có thể XPath qua nó. các biểu thức chính quy được điều chỉnh tốt là thực tế hơn.

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