HtmlAgilityPack HtmlWeb load() throws an exception
причем это стало происходить где-то неделю назад. до этого почти год работало красиво. есть какие-нибудь идеи? вот код:
var webGet = new HtmlWeb();
webGet.UserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0";
webGet.OverrideEncoding = Encoding.UTF7;
try {
string url = @"https://www.westlotto.com/wlinfo/WL_InfoService?gruppe=SpielplanToto&client=wlincl";
var document = webGet.Load(url);
с форматированием снова не получается, клацать на "код" не помогает : (
мэссэдж в иксэпшне: "The underlying connection was closed: An unexpected error occurred on a send."
браузером урл без роблем открывается. подсмотреть wireshark'ом заголовок того, что шлет моцилла, не получается, потому что шифровано, а других пособов это узнать я не знаю.
вот не ожидал, что из 20ки просмотревших никто не в курсе : ( жаль, как-то решил обходным путем, но если бы удалось разобраться с этой проблемой, было бы значительно проще.
вот попробуйте пойти на сайт по этой ссылке:
https://www.westlotto.com/wlinfo/WL_InfoService?gruppe=Spi...
а потом - попробуйте ЛЮБЫМ УДОБНЫМ ВАС СПОМОБОМ, но программно считать то же самое с этого урла. если получится - расскажите, как вам это удалось.
java 1.8, нет сейчас линукса с перлом под рукой.
package test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; public class Reader { public static void main(final String[] args) throws IOException { final URL totoUrl = new URL("https://www.westlotto.com/wlinfo/WL_InfoService?gruppe=SpielplanToto&client=wlincl"); BufferedReader reader = new BufferedReader(new InputStreamReader(totoUrl.openStream())); String line = null; do { line = reader.readLine(); System.out.println(line); }while(line!=null); } }
Скачивает содержимое:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta name="Audience" content="Alle"> <meta name="Author" content="Westdeutsche Lotterie GmbH & Co. OHG"> <meta name="Copyright" content="Westdeutsche Lotterie GmbH & Co. OHG"> <meta name="Description" content="Ergebnisse, Gewinnzahlen und Quoten fьr Lotto, KENO, GlücksSpirale, ODDSET KOMBI-Wette, ODDSET-TOP-Wette, Auswahlwette, Ergebiswette und NKL. Hier finden Sie alle Lottozahlen online."> <meta name="Language" content="de"> <meta name="Publisher" content="Westdeutsche Lotterie GmbH & Co. OHG"> <meta http-equiv="Content-Language" content="de"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-15"> <link rel="stylesheet" href="/infoservice/wlincl/styles/spielplan-toto.css" type="text/css" media="all" title="Westdeutsche Lotterie GmbH & Co. OHG"> <title>TOTO-Spielplan und Ergebnisse</title> </head> <body> <div id="page"> <div class="headline"> <div class="edge_top_left"> <div class="edge_right"></div> </div> <div class="headline_text"> <div class="headline_indent"> <h1>TOTO-Spielplan vom 18.08.2018 bis 19.08.2018 (33. Ausspielung)</h1> </div> </div> <div class="edge_bottom_left"> <div class="edge_right"></div> </div> </div> и те де
Может проблема в том, с каким IP устанавливается соединение. Для
nslookup www.westlotto.com
Non-authoritative answer:
Name: a10-vip-wlcom.westlotto.de
Addresses: 2003:8:10:2:0:a10:afe6:42b7
194.25.144.211
Aliases: www.westlotto.com
и IPv6 и IPv4 занесены. Проверьте wireshark-ом куда запросы от браузера и от шарпа идут.
с форматированием снова не получается
Нужно к сожалению, ручками набрать тэг pre и поместить код внутрь, исключительно в режиме "код". Как делать на "автомате" не знаю
var webGet = new HtmlWeb(); webGet.UserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0"; webGet.OverrideEncoding = Encoding.UTF7; try { string url = @"https://www.westlotto.com/wlinfo/WL_InfoService?gruppe=SpielplanToto&client=wlincl"; var document = webGet.Load(url); }
и браузер, и сишарп идут по тому же адресу (длинному). оба посылают туда "Client Hello", но браузер получает ответ "Server Hello", а сишарп повторное подтверждение коннекта. дальше сишарм снова шлет "Client Hello", и на єтом соединение рвется.
но я вас страшно благодарен за код на жаве, меня это очень даже устраивает. я уже проверил, сработает ли он у меня, и убедился что да. осталось только найти, как на жаве html парсят и с mysql работают, но это уже не проблема.
А зачем Вам Ява когда ваш код работает без проблем, вот попробуйте. Только либу нужно загрузить для сборки.
спасибо, действительно работает. только не в моей "рабочей" версии (VS2010 : ). потому как версия HtmlAgilityPack, которая работает, с моей версией визуал студии не совместима, видимо. по-крайней мере NuGet'ом не устанавливается. пришлось установить 2017, чтобы попробовать. может, на нее стоит вообще пересесть? я вообще страшно не люблю всяких пересадок. у вас уже есть опыт, расскажите, что говорит "за"?
пришлось установить 2017, чтобы попробовать. может, на нее стоит вообще пересесть?
А смысл сидеть на 2010?
После второго сервис пака мы всегда переходим на новую.
Проблемы будут с различными "дополнениями" для студии. Если есть что старое, то не пойдет в принципе.
Но все что мне надо есть и для 2017
Отличия от 2010 никак не вспомню, потому как была еще 2015 до того
https://docs.microsoft.com/en-us/visualstudio/ide/whats-ne...
Кстати, попробовал перекомпилить проект под НЕТ 4.0 - не работает
System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. ---> System.IO.IOException: Authentication failed because the remote party has closed the transport stream.
вот видите, как оно нехорошо. это, вообще, не самый удобный сайт для получения этой информации, но другие с самого начала у меня не прочитались, поэтому остановился на этом. видимо, эти теперь тоже пересели на какие-то новые secure features, и тоже перестали у меня читаться. уверен, жава читала все с самого начала. потому что жава - это в первую очередь интернет и все, что с ним связано. если там что-то отстанет от жизни - жизнь остановится. а сишарп может жить дальше, потом догнать. по возможности. так что скорее всего таки сделаю считывающий кусок на жаве, это будет цукунфт зиха : )
наверное, что-то в тоде этого, только наоборот. т.к. у меня версия клиента не менялась, а руки чесались у серверных парней. они внедрили что-то суперсовременное, и теперь никто не перехватит по пути данные о том, кто с кем играет, но я теперь не могу их тоже получить. обновляшки - это хорошо, но иногда достает.
причем HtmlAgilityPack здесь ни при чем: он использует средства фреймворка, а оно не срабатывает (пробую ваш волшебный тэг, надеюсь, сработает):
using (var client = new System.Net.WebClient()) { string html = client.DownloadString("https://www.westlotto.com/wlinfo/WL_InfoService?gruppe=SpielplanToto"); var doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(html); ... }