无法使用xpath变量提取领英页面上的元素

本文关键字:元素 提取 xpath 变量 | 更新日期: 2023-09-27 18:03:45

以下是我的c#代码

using System;
using System.Xml;
using System.Collections.Generic;
using HtmlAgilityPack;

public class Program
{
    public static void Main()
    {
    var htmlDocument = new HtmlDocument();
        htmlDocument.LoadHtml("https://www.linkedin.com/in/urbanwell");     
        var results = new List<string>();
        var LinkedInCompany="(//div[contains(@class, 'profile-card-extra')]//div[contains(@id, 'website-view')]//a)[1]";
        HtmlNodeCollection siteFields = htmlDocument.DocumentNode.SelectNodes(LinkedInCompany);
        Console.WriteLine("siteFields COUNT = {0}", siteFields.Count);
      }
}

这里siteFields是null,而如果我使用xpath (//div[contains(@class, 'profile-card-extra')]//div[contains(@id, 'website-view')]//a)[1]Chrome扩展,我在页面上得到的结果是网站。--> http://urban-well.com/

请建议,linkedin是否更改了页面格式或其他chrome可以自动检测但不是我的代码

无法使用xpath变量提取领英页面上的元素

LinkedIn似乎需要登录其网站才能显示这些信息。我已经比较了两个HTML(匿名用户和登录用户),并且您正在查找的信息仅适用于登录用户。

要解决这个问题,你必须在加载网页之前登录Linkedin。您应该能够通过发送类似于LinkedIn登录表单生成的POST请求来实现这一点。使用浏览器调试器(网络选项卡)查找要在c#应用程序中重现的请求。

此外,LinkedIn的一些内容是用客户端JavaScript生成的,所以你将无法使用c#来废弃这些内容。