Witaj gościu! Zaloguj się lub Zarejestruj aby móc korzystać ze wszystkich funkcjonalności jakie oferuje to forum! Rozpocznij zarabianie przez internet, poznaj korzysci pracy w domu! Rejestracja i korzystanie z forum jest całkowicie darmowe!
Praca w domu - Dodatkowa Praca - Zarabianie przez Internet
[POMOCY] C# Scrapowanie z wielu stron jednocześnie - Wersja do druku

+- Praca w domu - Dodatkowa Praca - Zarabianie przez Internet (https://zarabiam.com)
+-- Dział: Off-Topic (/Forum-Off-Topic-9)
+--- Dział: Programowanie (/Forum-Programowanie-364)
+--- Wątek: [POMOCY] C# Scrapowanie z wielu stron jednocześnie (/Temat-POMOCY-C-Scrapowanie-z-wielu-stron-jednoczesnie-147077)



[POMOCY] C# Scrapowanie z wielu stron jednocześnie - Ando - 06-05-2017 21:54

Cześć,
Szukam sposobu na wydobycie pewnych danych z wielu stron na raz. Na każdej stronie potrzebne dane są z tych samych wyrażeń XPATH. Używam HtmlAgilityPack.
Jakieś propozycje?
Dodam, że tych stron będzie koło 500 i baza będzie się zwiększać więc ręczne wpisywanie adresów odpada (odczytywanie adresów z pliku txt lub xls lub bezpośrednio z richTextBox'a będzie spoko).
Może jakieś wykonywanie skryptu w pętli ze zmianą adresu? Jak to zadeklarować?


RE: [POMOCY] C# Scrapowanie z wielu stron jednocześnie - xOceanFirex - 06-05-2017 22:18

Tworzysz klase NetConnection

Kod:
using System;
using System.Net;

namespace pl.xxx
{
    class NetConnection : WebClient
    {
        private CookieContainer cookie = new CookieContainer();

        protected override WebRequest GetWebRequest(Uri address)
        {
            WebRequest request = base.GetWebRequest(address);

            if (request is HttpWebRequest)
            {
                (request as HttpWebRequest).CookieContainer = cookie;
                //(request as HttpWebRequest).AllowAutoRedirect = false;
            }
            return request;
        }
    }
}

Potem

Kod:
NetConnection connect = new NetConnection();
connect.DownloadString("adres");



RE: [POMOCY] C# Scrapowanie z wielu stron jednocześnie - coffee - 07-05-2017 15:41

(06-05-2017 22:18)xOceanFirex napisał(a):  Tworzysz klase NetConnection

Kod:
using System;
using System.Net;

namespace pl.xxx
{
    class NetConnection : WebClient
    {
        private CookieContainer cookie = new CookieContainer();

        protected override WebRequest GetWebRequest(Uri address)
        {
            WebRequest request = base.GetWebRequest(address);

            if (request is HttpWebRequest)
            {
                (request as HttpWebRequest).CookieContainer = cookie;
                //(request as HttpWebRequest).AllowAutoRedirect = false;
            }
            return request;
        }
    }
}

Potem

Kod:
NetConnection connect = new NetConnection();
connect.DownloadString("adres");

Przecież on nic nie pisał o tym, że ciasteczka muszą też być zaktualizowane..

To jest cały kod potrzebny do zrobienia tego, co zrobić chce autor. Jeśli faktycznie żeby scrapować musi być gdzieś zalogowany, lub aktualizować ciasteczka to można wykorzystać proste biblioteki np. RestSharp.
Kod:
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = new HtmlDocument();
string[] urls = File.ReadAllLines("linki.txt");
string xPath = "//input[@type='foo']";

foreach (string url in urls) {
    try {
        doc = web.Load(url);
        File.AppendAllText($"results.txt", $"{url};{doc.DocumentNode.SelectSingleNode(xPath).GetAttributeValue("value","")}" + Environment.NewLine);
    }
    catch {
        File.AppendAllText($"results.txt", $"{url};ERROR" + Environment.NewLine);
    }
}


Kiedyś też wstawiałem na forum coś takiego:
(25-10-2016 14:17)coffee napisał(a):  [Obrazek: b4849c827b.gif]
W tym przypadku do każdego linku scrapuje 6 podobnych filmów.



RE: [POMOCY] C# Scrapowanie z wielu stron jednocześnie - xOceanFirex - 07-05-2017 16:25

Lepiej było dodać mu z ciasteczkami, niż by miał pisać z prośbą o to.


RE: [POMOCY] C# Scrapowanie z wielu stron jednocześnie - TechByte - 08-05-2017 08:53

ma 500 stron i z każdej strony ma sobie skopiowac cookisy? xD

Sent from my SM-N7505 using Tapatalk


RE: [POMOCY] C# Scrapowanie z wielu stron jednocześnie - Ando - 08-05-2017 11:16

Dzięki wielkie wszystkim za pomoc.
@[coffee] dzięki Tobie udało mi się napisać to co chciałem Smile