我目前正在创建一个爬虫,并且我需要在一个集合中抽象数据,所以我可以将它作为一行发送到数据库,整齐。XPath从一个节点内的多个标签检索值
这里是剪断,它在我的计划中,它正确地去每个页面到目前为止并检索正确的对应URL
int tempflag = 0;
//linkValueList is full of sub urls previously crawled in the program
foreach (string str in linkValueList)
{
string tempURL = baseURL + str;
HtmlWeb tempWeb = new HtmlWeb();
HtmlDocument tempHtml = tempWeb.Load(tempURL);
foreach (HtmlNode node in tempHtml.DocumentNode.SelectNodes("//article[@itemprop='product']"))
{
//get the category from the linkNameList
string tempCategory = linkNameList.ElementAt(tempflag);
//grab url
string tempHref = node.GetAttributeValue("data-itemurl", string.Empty);
//grab image url
//grab brand
//grab name
//grab price
//send to database via INSERT
}
tempflag++;
}
下面是该网站的代码,我有工作,这是一个例子一个项目,每个项目类似于
<article .... itemprop="product" data-itemurl="Item's url">
<figure>
<a ....>
<img .... src="item's image source" ...>
</a>
<div ...>
<a>....</a>
</div>
</figure>
<div ...>
<a ....>
<div class="brand" itemprop="brand>Item's Brand</div>
<div class="title" itemprop="name">Item's Name</div>
</a>
<div ....>
<div class="msrp"></div>
<div class="price" itemprop="price">$18.99 - $119.99</div>
<span ...> ... </span>
</div>
</div>
</article>
正如你可以看到我已经使用XPath来让自己的<article>
标签内得到data-itemurl
检索项目的URL。我的问题是现在我已经在<article>
标签内,是否有一种简单的方法可以访问嵌入其中的其他标签?
我需要登录该图片的url的<img>
标记,品牌的<div itemprop="brand">
,项目名称的<div itemprop="name">
以及价格的<div itemprop="price">
。
正如我前面提到的,我试图在一次性获得所有这些信息,因此我可以在每个循环结束时将其全部查询到数据库中作为单个插入语句。
完美,我想进入我的那些天,我很接近,但没有正确的XPath语法。谢谢一堆! –