Member 12982873 Ответов: 1

Как вытащить файлы документов с сайта с помощью asp.net.


Здравствуйте, дорогие друзья. Я хочу получить документы с сайта. Создание интерфейса и размещение url-адреса любого сайта, а затем получение документов с этого сайта.Добрая помощь.

Что я уже пробовал:

using System;
using System.Net;
using System.IO;

public partial class Y : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Text1.Text = GetWebSiteContents("http://localhost/WebSite1/X.aspx");
    }

    protected string GetWebSiteContents(string url) {
        WebRequest req = WebRequest.Create(url);
        // Get the stream from the returned web response
        StreamReader sr = new StreamReader(req.GetResponse().GetResponseStream());
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        string strLine;
        // Read the stream a line at a time and place each one into the stringbuilder
        while ((strLine = sr.ReadLine()) != null) {
            // Ignore blank lines
            if (strLine.Length > 0) sb.Append(strLine);
        }
        sr.Close();
        return sb.ToString();
    }
}
И я получил текст в этом коде.

F-ES Sitecore

Ты не сможешь этого сделать. Вы можете получить HTML, но этот HTML будет указывать на источники (css-файлы, js-файлы, изображения и т. д.), которые (в зависимости от того, как структурированы ссылки) могут больше не быть действительными или больше не будут работать теперь, когда они управляются другим доменом. Если бы вы могли просто выдавать себя за любую страницу, подобную этой, то каждый выпускал бы свой собственный google или gmail или что-то еще, что является просто захватом правильных сервисов этими компаниями.

Member 12982873

Можете ли вы помочь мне в этом деле ?

ZurdoDev

Помочь в чем? Это не очень понятно.

Member 12982873

тогда очистите его?

ZurdoDev

Да, пожалуйста.

1 Ответов

Рейтинг:
9

Sheila Pontes

Привет,

Класс WebRequest позвольте, чтобы вы получили html-код сайта (исходный код).
Html, вы можете прочитать ваши теги с помощью HtmlAgilityPack библиотека.
Ссылка: Html Agility Pack | HAP

Вот код для чтения html сайта:

private HtmlAgilityPack.HtmlDocument GetWebSiteContents(string url)
        {
            string postString = "";

            HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(new Uri(url));

            //Our method is post, otherwise the buffer (postvars) would be useless
            WebReq.Method = "POST";
            //We use form contentType, for the postvars.
            WebReq.ContentType = "application/x-www-form-urlencoded";

            WebReq.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";

            //The length of the buffer (postvars) is used as contentlength.
            WebReq.ContentLength = postString.Length;

            //Enviar os atributos dos post 
            StreamWriter requestWriter = new StreamWriter(WebReq.GetRequestStream());
            requestWriter.Write(postString);
            requestWriter.Close();

            //obter a stream de resposta do servidor e gerar um documento html
            Stream stream = WebReq.GetResponse().GetResponseStream();
            HtmlAgilityPack.HtmlDocument htmldoc = new HtmlAgilityPack.HtmlDocument();
            htmldoc.Load(stream);
            
            //finalizar os objetos aberto
            stream.Close(); 
            WebReq.GetResponse().Close();

            return htmldoc;
            
        }


Важно! Если на сайте есть проверка подлинности, необходимо отправить файл cookie проверки подлинности.
....

HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);

//  authentication
WebReq.CookieContainer = new CookieContainer();
WebReq.CookieContainer.SetCookies(url, enter here the authentication cookie);

//end authentication

....


Для чтения элементов html-тега:
//inicialize variable
HtmlAgilityPack.HtmlDocument html = null;
HtmlNode[] elems = null;

//get html
html = this.GetWebSiteContents(url);

//read specific input tag of the site.  
elems = html.DocumentNode.Descendants("input").Where(n => n.Attributes["name"] != null && n.Attributes["name"].Value == "name_html_tag").ToArray();
string myvalue = elems[0].Attributes["value"].Value.ToString();


Member 12982873

Но когда я пытаюсь установить HtmlAgilityPack, возникает эта ошибка: "HtmlAgilityPack" уже имеет зависимость, определенную для "System. Net. Http".???

Sheila Pontes

Привет,
Завтра, когда я приду на работу. Я посмотрю это дело для вас.

Sheila Pontes

Привет;

Не устанавливайте HtmlAgilityPack. Скачать версию 1.4.6. Html Agility Pack, Распакуйте файл, добавьте ссылки в свой проект в соответствии с версией фреймворка и добавьте пространство имен " using HtmlAgilityPack;"