2012-04-15 13 views
27

Tôi (là) một nhà phát triển Python đang xây dựng một ứng dụng ghép trang web GUI. Gần đây tôi đã quyết định chuyển sang .NET framework và viết cùng một ứng dụng trong C# (quyết định này không phải của tôi).Trình duyệt không đầu cho C# (.NET)?

Trong Python, tôi đã sử dụng thư viện Cơ chế. Tuy nhiên, tôi dường như không thể tìm thấy bất cứ điều gì tương tự trong NET. Những gì tôi cần là một trình duyệt sẽ chạy trong một chế độ không đầu, có khả năng điền vào biểu mẫu, gửi chúng, vv Trình phân tích cú pháp JavaScript không phải là điều bắt buộc, nhưng nó sẽ khá hữu ích.

+1

Phiên bản tự làm không cần bất kỳ thư viện nào khác: http://stackoverflow.com/a/1995667/17034 –

+0

http://stackoverflow.com/questions/12059752/run-and-control-browser-control -in-different-thread Điều đó phù hợp với nhu cầu của tôi. –

Trả lời

29

Có một số lựa chọn:

  • WebKit.Net (miễn phí)

  • Awesomium
    Nó dựa trên Chrome/WebKit và hoạt động giống như một nét duyên dáng. Có một giấy phép miễn phí có sẵn mà còn là một một thương mại và nếu cần thiết bạn có thể mua mã nguồn :-)

  • HTML Agility Pack (miễn phí)
    này giúp với chiết xuất thông tin từ HTML vv và có thể có ích trong trường hợp của bạn (có thể kết hợp với HttpWebRequest)

+2

Cảm ơn. Hmm, sửa tôi nếu tôi sai, nhưng không phải tất cả những điều này (hoặc ít nhất là hai cái đầu tiên) yêu cầu tạo ra một giao diện người dùng (tôi nghĩ rằng từ việc đọc tài liệu)? Những gì tôi cần là một trình duyệt không có đầu, vì vậy một trình duyệt không có GUI. –

+1

@Deusdies NO - ít nhất là liên kết thứ hai (Awesomium) và thứ ba (HTML Agility Pack) hoạt động hoàn toàn không đầu ... với liên kết đầu tiên tôi không chắc chắn ... – Yahia

+0

@Deusdies ví dụ Awesomium - theo tài liệu (xem http://awesomium.com/docs/1_6_5/sharp_api/) nó cung cấp cho bạn pixel nếu bạn muốn hiển thị chúng trong giao diện người dùng, nếu không thì không cần. – Yahia

3

bạn có thể sau TrifleJS (hiện đang trong phiên bản beta), hoặc một cái gì đó tương tự bằng cách sử dụng lớp .NET WebBrowser mà giao tiếp với IE thông qua một cửa sổ ActiveX/COM API.

Về cơ bản, bạn sẽ chạy trình duyệt hoàn chỉnh (không phải trình bao bọc yêu cầu http) bằng công cụ Trident của Internet Explorer, nếu bạn không quan tâm đến API JavaScript (cổng phantomjs), bạn vẫn có thể sử dụng một số của codebase C# để nhận các khái niệm chính (tiêu đề tùy chỉnh, cookie, thực thi tập lệnh, hiển thị ảnh chụp màn hình, v.v.).

Lưu ý rằng điều này cũng có thể mô phỏng các phiên bản khác nhau của IE tùy thuộc vào những gì bạn đã cài đặt.

enter image description here

7

Nhiều giải pháp:

  • PhantomJS - đầy đủ tính năng không đầu web trình duyệt. Thường được sử dụng trong cặp với Selenium cho phép bạn truy cập trình duyệt từ ứng dụng .NET.
  • Optimus (nuget package) - trình duyệt web không đầu nhẹ. Đó là trong phiên bản beta nhưng nó là đủ cho một số trường hợp.

Tôi đã sử dụng cả hai để kiểm tra web. Nhưng chúng cũng thích hợp cho việc cạo web.

+1

Liên kết tới giải pháp tiềm năng luôn được chào đón, nhưng vui lòng thêm ngữ cảnh xung quanh liên kết để bạn bè của bạn người dùng sẽ có một số ý tưởng nó là gì và tại sao nó ở đó. Luôn trích dẫn phần có liên quan nhất của một liên kết quan trọng, trong trường hợp trang web mục tiêu không thể truy cập được hoặc sẽ vĩnh viễn ngoại tuyến. Hãy xem xét việc chỉ là một liên kết đến một trang web bên ngoài là một lý do có thể là [Tại sao và làm thế nào là một số câu trả lời bị xóa?] (Http://stackoverflow.com/help/deleted-answers) –

+0

Cảm ơn các bạn. Tôi đã cập nhật câu trả lời của mình. – Knyaz

+0

Quảng bá quá mức một sản phẩm/tài nguyên cụ thể có thể được cộng đồng coi là ** spam **. Hãy xem [trợ giúp], đặc biệt [Loại hành vi nào được mong đợi của người dùng?] (// stackoverflow.com/help/behavior) phần cuối cùng của: _Không vượt quá tự thăng hạng_. Bạn cũng có thể quan tâm [Làm cách nào để quảng cáo trên Stack Overflow?] (// stackoverflow.com/help/advertising). – FrankerZ