【发布时间】:2018-03-21 19:01:36
【问题描述】:
我正在执行网络抓取,我尝试了所有可能的组合,但 XPath 返回 null 值。
我删除了方括号并为其添加了//,但它每次都返回null。
这些是实际的 XPath,我附上了我在代码中使用的格式化的 XPath。
//*[@id="agent_list_wrapper"]/div[2]/div[2]/div/div[1]/a
//*[@id="agent_list_wrapper"]/div[2]/div[2]/div/div[3]
下面是我的代码。
private async Task<List<NameAndphone>> WebDateFromPage(int pagenum)
{
string url = "http://www.realtor.com/realestateagents/New-York_NY/photo-1";
if (pagenum != 0)
url = "http://www.realtor.com/realestateagents/New-York_NY/photo-1/pg-" + pagenum.ToString();
var doc = await Task.Factory.StartNew(() => web.Load(url));
var name = doc.DocumentNode.SelectNodes("//*[@id=\"agent_list_wrapper\"]//div//div//div/div//a");
var phone = doc.DocumentNode.SelectNodes("//*[@id=\"agent_list_wrapper\"]//div//div//div//div");
if (name == null || phone == null)
return new List<NameAndPhone>();
var names = name.Select(node => node.InnerText);
var phones = phone.Select(node => node.InnerText);
return names.Zip(phones, (name, phone) => new NameAndPhone() { Name = name, Phone = phone }).ToList();
}
【问题讨论】:
-
能否确认xml文件中确实存在xpath?你能发布一个sn-p XML 文档吗?
-
你能详细说明你到底想要什么。我是新手,对此我不太了解,如果你能在这方面帮助我,我将非常感激
-
我已经编辑了我的代码,我正在尝试从附加的网站获取姓名和电话号码
-
我不确定如何读取 xml 结构。你能指导我一下吗?
-
当我将鼠标悬停在文本字段上并检查值时,我得到了完整的网站内容。
标签: c# html xpath linq-to-xml