웹 사이트에서 일부 정보를 다 써 버리려합니다. 저는 8 필드의 정보가 필요합니다. 나는 5 필드를 갖지만, 3 필드는 항상 비어 있습니다. 제 정규 표현식에 실수가 있다고 생각합니다. 파이썬으로하고 있는데 BS를 사용할 필요가 없습니다. 다음은 내가 긁을 필요가있는 HTML 파일입니다. 이것은 웹 페이지 중 하나의 예입니다. 여기 파이썬에서 웹 스크래핑을위한 정규 표현식의 오류가 발생했습니다.
enter code here
<td><span class="facultyName">John Matthew Falletta, MD</span>
<span class="primaryTitle">Professor of Pediatrics</span>
<span class="secondaryTitle">Professor in the School of Nursing</span>
<td><span class="label">Department:</span>
</td><td>Pediatrics</td>
<td><span class="label">Division:</span>
</td><td>Hematology/Oncology</td>
<td><span class="label">Address:</span></td><td>Box 2991<br>DUMC<br>Durham, NC 27710 </td>
<td><span class="label">Phone:</span></td><td>
(919)
668-5111<br>
<td><span class="label">FAX:</span></td><td>
(919)
688-5125</td>
태그의 종류마다 각각의 정규 표현식을 포함하는 내 코드입니다 :
enter code here
patFinderFullname = re.compile('<span class="facultyName">(.*)</span>')
patFinderPTitle = re.compile('<span class="primaryTitle">(.*)</span>')
patFinderSTitle = re.compile('<span class="secondaryTitle">(.*)</span>')
patFinderDepartment = re.compile('<span class="label">Department:</span>\s+ \s+</td><td>(.*)</td>')
patFinderDivision = re.compile('<span class="label">Division:</span>\s+ \s+</td><td>(.*)')
patFinderAddress = re.compile(' <span class="label">Address:</span>\s+(.*)\s+</td>')
patFinderPhone = re.compile('<span class="label">Phone:</span></td><td>\s*(.*?)\s*<br>')
patFinderFax = re.compile('<td><span class="label">FAX:</span>\s+</td><td>\s+(.*)</td>')
처음 다섯 개 필드 결과는 올바른오고 있지만, 주소, 전화 및 팩스의 마지막 세 필드는 항상 반환하는 빈. 아무도 내가 누락 된 부분을 지적 할 수 있습니까? 아니면 마지막 세 필드의 정규 표현식에 문제가 있습니까? 나는 이전의 [1] [질문]을 올렸지 만,이 문제는 나중에 그것에 도착 했으므로 나는 다른 질문으로 그것을 묻습니다. [1]
: How to scrape html tags spread over multiple lines in python?
부서 're.compile()'에 닫기 괄호가 없습니다. 실제로 표현의 끝은 전혀 보이지 않습니다. 닫는 '') ' –
죄송합니다. DIvision에 놓친 경우, 오타가되어야합니다. 지난 3 개의 입력란, 즉 주소, 전화 및 팩스에서 확답을 얻고 있습니다. – Steve
HTML 파서를 사용하지 않는 이유는 무엇입니까? –