나는 지난 주에이 같은 프로젝트에 대해 가난하게 물었고 어떤 제안도받지 못했다. 나는 더 명확하게하려고 노력할 것이다. www.gtin13.com 웹 사이트의 데이터로 작업하고 있습니다. 예를 들어, 검색에 땅콩 버터를 입력하면 설명 을 잡으려고합니다 . ** Nabisco 누터 버터 샌드위치 쿠키 초콜릿 땅콩 버터 4 Ct * 크기 : 크기 : 12 온스 GTIN : 0044000003562 * ean : ** 00- 44000-00356-2 upc : 044000003562 및 upca : 04400000356. SelectNodes ("<b>")
사용하여 nodeCollection을 사용해 보았는데 오류가 발생했습니다. html 민첩성을 사용하여 <b> <br>
사이의 데이터를 잡아서 / s 사이를 파싱하는 것이 가능합니까? 경험이 부족하여이 문제를 해결할 수 없습니다. 반환 된 페이지에 내가 진정한 노드라고 생각하는 것이 나타나지 않습니다. html 민첩성이이를 수행 할 수 없다면 누구나 더 나은 접근 방식을 제안 할 수 있습니까? 결국 나는 각 데이터 조각을 SQL 테이블로 보내고 싶다. 내가 더 잘 이해할 수있는 방법으로 발표했으면 좋겠다.
이 페이지는이 소스 형식의 정보를 반환합니다.
<b><a href="/product/nabisco+nutter+butter+sandwich+cookies+chocolate+peanut+butter+4+ct/">Nabisco Nutter Butter Sandwich Cookies Chocolate Peanut Butter 4 Ct</a></b><br />
Size: 12 oz<br />
GTIN/EAN-13: 0044000003562 / 00-44000-00356-2<br />
UPC-A: 044000003562 / 04400000356<br />
Tags:
<a href="/tag/chocolate/">Chocolate</a>,
<a href="/tag/cookies/">Cookies</a>,
..<br />
<br >
원본 문서가 매우 체계적이지 않기 때문에 (계층 레이아웃은 아니지만 평면 레이아웃을 사용하기 때문에) 간단하지만 Html Agility Pack을 사용하여 주요 텍스트 필드를 추출하는 방법은 다음과 같습니다.
HtmlDocument doc = new HtmlDocument();
doc.Load("yourDoc.Htm");
// Get A nodes that have an HREF attribute
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//b/a[@href]"))
{
// This will contain anchor's displayed text
string title = node.InnerText;
Console.WriteLine("title=" + title);
// Get the 1st BR, and then it's next sibling of TEXT type.
HtmlNode sizeNode = node.SelectSingleNode("../following-sibling::br[1]/following-sibling::text()");
Console.WriteLine(" size=" + sizeNode.InnerText.Trim());
// Get the 3nd BR, and then it's next sibling of TEXT type.
HtmlNode eanNode = node.SelectSingleNode("../following-sibling::br[2]/following-sibling::text()");
Console.WriteLine(" ean=" + eanNode.InnerText.Trim());
// Get the 3rd BR, and then it's next sibling of TEXT type.
HtmlNode upcNode = node.SelectSingleNode("../following-sibling::br[3]/following-sibling::text()");
Console.WriteLine(" upc=" + upcNode.InnerText.Trim());
}
그러면 다음과 같이 표시됩니다.
title=Peanut Delight Peanut Butter & Grape Jelly
size=Size: 18 oz
ean=GTIN/EAN-13: 0041498143909 / 00-41498-14390-9
upc=UPC-A: 041498143909 / 04149814390
title=Nabisco Nutter Butter Sandwich Cookie Bites Peanut Butter
size=Size: 10 oz
ean=GTIN/EAN-13: 0044000046118 / 00-44000-04611-8
upc=UPC-A: 044000046118 / 04400004611
title=Nabisco Nutter Butter Sandwich Cookies Chocolate Peanut Butter 4 Ct
size=Size: 12 oz
ean=GTIN/EAN-13: 0044000003562 / 00-44000-00356-2
upc=UPC-A: 044000003562 / 04400000356
기타...
참고 : 그것은 표준 문자열 조작 (IndexOf, 하위 문자열, 등 ...) 또는 정규식을 사용하여 크기, ean 및 upc 변수를 구문 분석해야하므로 100 % 완료되지 않습니다. 그러나 HTML 측면의 작업이 수행됩니다.
HTQL을 사용하면 페이지에서 전체 테이블을 추출하는 쿼리는 다음과 같습니다.
<div (CLASS='BGC')>1.<div (CLASS='CON')>1.<div (CLASS='SC')>1.<div (ID='post-20')>1.<div (CLASS='PostContent')>1.<b sep>2-0 {
title=<a>1:tx;
size=/'Size:'~'<br />'/;
gtin=/'GTIN/EAN-13:'~'<br />'/;
upc=/'UPC-A:'~'<br />'/;
tags=/'Tags:'~'<br />'/;
}
SQL 데이터베이스에 결과 만 보내야하는 경우 IRobotSoft 웹 스크레이퍼를 사용하여 sugguest합니다.