나는 다음 아기의 가능한 이름 목록을 만들려고 노력 중이며 사이트를 살펴보았습니다.인도육아. 사이트의 각 이름에는 이와 같은 URL에 세부정보 페이지가 있습니다 http://www.indiaparenting.com/babynames/meaning-of-Aadesh.shtml
. 이름을 우리 첫째와 비슷하게 짓고 싶고 다음과 같이 하려고 합니다.
- "의미"가 포함된 사이트의 모든 페이지를 내 하드 드라이브의 단일 폴더로 가져옵니다.
wget -nc -c -nd -r -l1 -k http://www.indiaparenting.com/babynames/hindu-boy-names.php -A "meaning-of*" -I /babynames
dir > filenames.txt
모든 것을 하나의 텍스트 파일에 넣는 것과 같은 일을 하십시오 .- 특정 정규식에 대해 생성된 파일을 구문 분석하여 가능한 이름을 찾습니다. 첫째 아들의 이름은 Ranveer이고 N 또는 R로 시작하는 이름을 찾고 있으므로 정규식은 아마도 다음과 같을 것입니다
[NR][aeiou][^aeiou][^aeiou][aeiou]{2}[^aeiou]
. - 마담과 함께 최종 목록을 수동으로 살펴보고 이름을 선택하세요!
내가 겪고있는 문제는 wget에 있습니다. 페이지는 PHP로 생성되었으며 하단에는 평소와 같이 다른 페이지의 URL에 연결되지 않는 페이지 탐색기가 있습니다.
JS pagingFunction을 보고 찾았습니다.
function pagingFunction(labelName){
vpage = document.getElementById("pageNum");
pageNm = labelName;
vpage.value = pageNm;
document.getElementById("frmPaging").submit();
}
질문: 페이지를 재귀적으로 WGET하면 페이지별로 이동할 것이라고 생각했지만 그렇지 않습니다. WGET으로 이 문제를 처리할 수 있는 방법이 있나요? 그렇지 않다면 다른 옵션이 있습니까?
기타 정보: 정규식을 기반으로 목록을 생성하려고 생각했지만 어쨌든 너무 길고 유효하지 않은 이름이 너무 많기 때문에 아기 이름 사이트 중 하나의 실제 이름을 기반으로 작성하고 싶습니다. 또한 사이트에 연락하여 DB에서 쿼리를 실행하고 이름을 파일에 넣을 수 있는지 확인하고 다른 모든 방법이 실패하면 확인할 다른 사이트가 있는지 확인하겠습니다.
답변1
이 사이트는 특히 이상한 디자인을 가지고 있습니다. 하지만 참고로 PHP는 여기서 차이를 만들지 않습니다.
다음 방법으로 페이지를 로드하는 것 같습니다.
- 링크를 클릭하면 일부 JS가 실행됩니다.
- 이 JS는 페이지 번호로 숨겨진 양식을 채웁니다.
- 그런 다음 스크립트는 양식을 제출하여 서버에 POST 요청을 보냅니다.
- 서버는 관련 페이지로 직접 응답합니다.
여기에는 몇 가지 옵션이 있습니다. 가장 쉬운 방법은 1부터 n까지 모든 페이지를 검색하기 위해 루프를 사용하여 wget
요청을 스크립트로 작성하는 것입니다. --post-data
실제 요청이 무엇인지 알아보려면 설명서와 브라우저의 네트워크 모니터를 참조하세요. 예를 들어, Firefox의 네트워크 모니터는 요청 본문을 다음과 같이 표시합니다.
Content-Type: application/x-www-form-urlencoded
Content-Length: 145
pagingQuery=select+*+from+tblbabynames+where+++religion%3D%27hindu%27+and+gender%3D%27M%27+limit+0%2C30&totalRows=3097&pageNum=2&searchResultNo=0
아마도 pageNum=2
루프 내에서 교체할 수 있습니다.
더 관련된 방법은 Selenium과 같은 브라우저 자동화 툴킷을 사용하여 문자 그대로 탐색하고딸깍 하는 소리인간처럼 JS를 활성화합니다.