이 URL에서 요소의 세부 정보를 가져 오기 위해 HTML 민첩성 팩을 사용하고 있습니다. 링크
C # (Windows Form Application)에서이 코드를 사용하고 있습니다.
var webGet = new HtmlWeb();
doc = webGet.Load("http://www.trendyol.com/Butik/Liste/Kadin");
HtmlNodeCollection butiks = doc.DocumentNode.SelectNodes("//div[contains(@class,'butik')]");
richTextBox1.Text = butiks.Count().ToString();
if (butiks != null)
{
foreach (HtmlNode element in butiks)
{
var butikUrl = element.SelectSingleNode("//div[@class='butik-large-image']/a").GetAttributeValue("href", null);
var butikTitle = element.SelectSingleNode("//div[@class='butik-large-image']/a").GetAttributeValue("title", null);
var butikImg = element.SelectSingleNode("//div[@class='butik-large-image']//a/img").GetAttributeValue("src", null);
var butikEndTime = element.SelectSingleNode("//div[@class='butik-name']/div[@class='butikTimeLine']/a/div[@class='timelineMain']/h1").GetAttributeValue("enddate", null);
dataGridView1.Rows.Add("", butikUrl, butikTitle, butikImg, butikEndTime);
}
}
else
{
MessageBox.Show("Null Obeject...!");
}
이 코드는 항상 요소 세부 정보를 반환합니다. 도울 수 있니?
또한 다음 코드를 사용했지만 다음 오류가 발생합니다.
var butikUrl = element.SelectSingleNode(".//div[@class='butik-large-image']/a").GetAttributeValue("href", null);
var butikTitle = element.SelectSingleNode(".//div[@class='butik-large-image']/a").GetAttributeValue("title", null);
var butikImg = element.SelectSingleNode(".//div[@class='butik-large-image']//a/img").GetAttributeValue("src", null);
var butikEndTime = element.SelectSingleNode(".//div[@class='butik-name']/div[@class='butikTimeLine']/a/div[@class='timelineMain']/h1").GetAttributeValue("enddate", null);
이 오류는 var butikUrl = element.SelectSingleNode(".//div[@class='butik-large-image']/a").GetAttributeValue("href", null);
오류 : 추가 정보 : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.
butiks
변수를 채우는 XPath 술어는 너무 일반적입니다. contains(@class,'butik')
표현식은 foreach
루프 본문에 액세스하려는 특정 하위 항목이없는 butik-name
butik-large-image
, butik-name
등과도 일치합니다. 예외. 예를 들어 class
정확히 'butik large'
(Firefox의 FirePath에서 XPath가 테스트 됨) 인 div
를 검색하여보다 구체적인 조건자를 사용하십시오.
doc.DocumentNode.SelectNodes("//div[@class='butik large']");
변화
HtmlNodeCollection butiks = doc.DocumentNode.SelectNodes("//div[contains(@class,'butik')]");
에
HtmlNodeCollection butiks = doc.DocumentNode.SelectNodes("//div[contains(@class,'butik-large-image')]");
그러면 20 개의 누적 된 광고 요소가 반환됩니다.
그런 다음 다른 광고의 NodeCollection
을
HtmlNodeCollection butiks2 = doc.DocumentNode.SelectNodes("//div[contains(@class,'butik small left')]");
집에서 HtmlAgilityPack 웹 스크래핑 코드를 사용하여 도움이 될만한 방식으로 촬영할 수 있습니다.
편집 : LINQ 함께 두 목록에 가입 할 수 있습니다.
butiks.Union(butiks2);