【发布时间】:2021-11-12 21:10:53
【问题描述】:
我必须从网站下载一些数据,但我找不到正确的方法。 这是我感兴趣的课程:
<div class="flex-item text-primary" data-toggle="tooltip" title="" data-original-title="wsgk@wsgk.com.pl">
<a class="ajax-modal-link icon-envelope cursor-pointer addax addax-cs_hl_email_submit_click" data-count-hovers="" data-hover-class-remove="addax addax-cs_hl_email_click_submit" data-hover-class-add="addax addax-cs_hl_email_hover" data-ga="l-email-modal" data-type="p" data-tracking-click="" data-toggle="modal" data-target="#mail-modal" data-company-trade-id="3123" data-company-id="120863029" data-company-email="mail@mail.com" data-company-name="Name" data-ajax-modal-tracking-type="result">
email
</a>
</div>
这是我的循环:
foreach(var site in website)
{
var html = site.Value;
var web = new HtmlWeb();
var _html = web.Load(html);
var node = _html.DocumentNode.SelectNodes("//div[@class='flex-item text-primary']");
foreach (var mail in node)
{
try
{
Console.WriteLine(mail.Attributes["data-original-title"].Value);
}
}
}
这是控制台的输出: 对象引用未设置为对象的实例。
看起来像这样: enter image description here 你能帮帮我吗?
// 更新
<div class="d-flex justify-content-between m-0 bottom-content">
<div class="flex-item text-primary">
<a class="icon-telephone addax addax-cs_hl_phonenumber_click" href="https://panoramafirm.pl/zachodniopomorskie,gryficki,trzebiatów,kwiatowa,3/pphu_agawa_inz_waldemar_fiolek-scinlt_aal.html" data-count-hovers="" data-hover-class-remove="addax addax-cs_hl_phonenumber_click" data-hover-class-add="addax addax-cs_hl_phone_hover" data-ga="l-phone" data-toggle="tooltip" title="" data-tracking-click="https://panoramafirm.pl/tr4ck1ng.png?displayType=results&type=clickphone&sid=8f04e98ua6kmfmkr7fe1b26rth&lstPersistentId=120898648_611&page=4" data-tracking-id="120898648_611" data-type="p" data-original-title="601 155 493">
telefon
</a>
</div>
<div class="flex-item text-primary">
<a class="icon-website text-secondary addax addax-cs_hl_hit_homepagelink_click" disabled="disabled">
www
</a>
</div>
<div class="flex-item text-primary" data-toggle="tooltip" title="" data-original-title="agawa.fiolek@gmail.com">
<a class="ajax-modal-link icon-envelope cursor-pointer addax addax-cs_hl_email_submit_click" data-count-hovers="" data-hover-class-remove="addax addax-cs_hl_email_click_submit" data-hover-class-add="addax addax-cs_hl_email_hover" data-ga="l-email-modal" data-type="p" data-tracking-click="https://panoramafirm.pl/tr4ck1ng.png?displayType=results&type=clickemail&sid=8f04e98ua6kmfmkr7fe1b26rth&lstPersistentId=120898648_611&page=4" data-toggle="modal" data-target="#mail-modal" data-company-trade-id="611" data-company-id="120898648" data-company-email="agawa.fiolek@gmail.com" data-company-name="Pphu Agawa Inż Waldemar Fiołek" data-ajax-modal-tracking-type="result">
email
</a>
</div>
<div class="flex-item text-primary">
<a class="icon-check-point show-on-map
cursor-pointer
addax addax-cs_hl_hit_company_footer_map" data-lat="54.05219" data-lon="15.28209" data-tradeid="611" data-companyid="120898648" data-ga="l-map" data-type="p" data-tracking-click="https://panoramafirm.pl/tr4ck1ng.png?displayType=results&type=clickmap&sid=8f04e98ua6kmfmkr7fe1b26rth&lstPersistentId=120898648_611&page=4">
mapa
</a>
</div>
</div>
我怎样才能跳过 2 个第一个 div,然后选择第三个?
【问题讨论】:
-
你试过调试吗?我的猜测是,这个标记是在客户端使用 JS 生成的,因此当您尝试使用 HTMLAgilityPack 解析它时,它不会出现在标记中。什么是 HtmlWeb?
-
@HaukurHaf web = {HtmlAgilityPack.HtmlWeb} 我下载了整个网站,我可以通过“查看页面源代码”看到这个,所以我可以“进入这个”:) 我需要找到为什么这不是工作。
-
网站的网址是什么?
-
我发现了我的问题。有 4 个相同的课程,我的课程选择了第一个。无论如何谢谢:)
-
HtmlAgilityPack 返回
null在 SelectNodes 中没有找到任何内容时,而不是空列表。这会导致 foreach 失败
标签: c# html .net html-agility-pack