2013-02-26 35 views
5

Tôi đang sử dụng gói Agility để phân tích cú pháp HTML, theo câu hỏi này What is the best way to parse html in C#? và tôi nhận được kết quả tuyệt vời :) Sự cố xảy ra khi tôi truy cập vào một số trang web. ví dụ như tôi đang ở Tây Ban Nha, tôi nhận được kết quả cho khu vực Tây Ban Nha và tôi muốn thay đổi như thể tôi đã ở Anh, làm thế nào nó có thể được thực hiện? Tôi có nghĩa là nó là cái gì tôi phải thay đổi trong tác nhân người dùng? (Tôi sử dụng như một tác nhân người dùng “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: xxx) Gecko/20041107 Firefox/xx)”Cài đặt Gói nhanh cho HTML

Trả lời

9

Bạn có thể sử dụng phương pháp WebClient.DownloadString cho phép bạn đặt tiêu đề yêu cầu HTTP để tải xuống nội dung của trang web và sau đó đưa nó vào gói nhanh nhẹn HTML.

UserAgent không phải là điều kiểm soát ngôn ngữ. Đó là tiêu đề Accept-Language. Vì vậy, ví dụ:

using (var client = new WebClient()) 
{ 
    client.Headers[HttpRequestHeader.AcceptLanguage] = "es-ES"; 
    client.Headers[HttpRequestHeader.UserAgent] = "some user agent if you wish"; 
    string html = client.DownloadString("http://example.com"); 
    // feed the HTML to HTML Agility Pack 
    var doc = new HtmlDocument(); 
    doc.LoadHtml(html); 

    // now do the parsing 
} 

Nhưng nếu trang web sử dụng nhận dạng dựa trên IP để gửi nội dung bằng các ngôn ngữ khác nhau, bạn không thể thay đổi điều đó.

+0

Tôi cũng đã sử dụng WebClient và trong nội dung html tôi có -> lang = "es", vì vậy câu hỏi là làm thế nào tôi có thể thay đổi sang tiếng anh? – jobormo

+0

Tuyệt vời! đó là những gì tôi muốn, đừng lo lắng các trang web không sử dụng nhận dạng IP :) – jobormo

1

tìm kiếm dựa trên vị trí hoặc các trang thường được thực hiện qua ip hoặc khi bạn đăng ký, bạn cho trang web biết bạn đang ở đâu. bạn có thể muốn xem xét một proxy anon trong quốc gia mà bạn muốn trông giống như bạn đang ở.