문제

서버 컨트롤의 ASP.NET 자동 명명의 오버 헤드를 해결하려고합니다. 수백 개의 중첩 된 ASP.NET 컨트롤에서 렌더링 된 7,000 줄의 HTML이 포함 된 페이지가 있으며, 그 중 다수는 수백 개의 문자 인 ID / 이름 속성을 가지고 있습니다.

내가 이상적으로 좋아하는 것은 "CTL00"으로 시작하는 모든 HTML 속성 값을 목록으로 추출하는 것입니다. Notepad ++에서 REGEX를 찾는 기능은 완벽 할 것입니다. Regex가 무엇인지 알고 있다면?

예를 들어, HTML이 다음과 같은 경우
u003Cinput name="ctl00$Header$Search$Keywords" type="text" maxlength="50" class="search" />

출력이 다음과 같은 것입니다.
이름 = "CTL00 $ HEADER $ 검색 $ 키워드"
보다 고급 검색에는 요소 이름도 포함될 수 있습니다 (예 : 제어 유형).
입력 | 이름 = "CTL00 $ 헤더 $ 검색 $ 키워드"

ID와 이름 속성 모두에 대처하기 위해 이름 대신 ID를 찾는 검색을 다시 실행합니다 (즉, 동시에 검색 할 무언가가 필요하지 않음).

최종 출력은 페이지의 서버 컨트롤 수와 각 이름의 길이를 나열하는 Excel 보고서이며, 제어 유형별로 정렬 될 수 있습니다.

도움이 되었습니까?

해결책 3

내 자신의 질문에 대답하는 가장 쉬운 방법은 BeautifulSoup, 'Dirty HTML'Python Parser를 사용하는 것입니다.

"당신은 그 끔찍한 페이지를 쓰지 않았습니다. 당신은 단지 데이터를 얻으려고 노력하고 있습니다. 지금, 지금, 당신은 HTML이 어떻게 생겼는지에 관심이 없습니다.이 파서도 마찬가지입니다."

작동하며 여기에서 사용할 수 있습니다. http://crummy.com/software/beautifulsoup

다른 팁

빠르고 더러운 :

검색

\w+\s*=\s*"ctl00[^"]*"

이것은 속성처럼 보이는 텍스트와 일치합니다. name="ctl00test" 또는 attr = "ctl00longer text". 이것이 실제로 HTML 태그 내에서 발생하는지 여부를 확인하지 않을 것입니다.해야 할 일이 조금 더 어렵고 불필요합니까? 또한 태그 이름 내에서 탈출 된 인용문을 확인하지 않습니다. Regexes와 같이 평소와 같이 필요한 복잡성은 정확히 일치하려는 내용과 입력이 어떻게 보이는지에 따라 다릅니다.

"7000"? "수백"? 친애하는 신.

텍스트 편집기에서 소스를보고 있으므로 이것을 시도하십시오 ... /(id | name) = "ct [^"]*" /

나는 이것과 마찬가지로 XPath를 제안합니다 의문

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top