1
이 페이지의 이름과 부제목을 추출하려고합니다 (예 :). 나는 이름을 추출하는 데 문제가 없지만 부제목은 성공적이지 못합니다. ,BeautifulSoup를 사용하여 페이지의 부제목을 추출 할 수없는 이유는 무엇입니까?
import urllib2
import re
import csv
from bs4 import BeautifulSoup
import time
def get_FamSearch():
link = "https://example.org/pal:/MM9.1.1/KH11-999"
openLink = urllib2.urlopen(link)
Soup_FamSearch = BeautifulSoup(openLink, "html")
openLink.close()
NameParentTag = Soup_FamSearch.find("tr", class_="result-item highlight-person")
if NameParentTag:
Name = NameParentTag.find("td", class_="result-value-bold").get_text(strip=True)
name_decode = Name.encode("ascii", "ignore")
print name_decode
SubheadTag = Soup_FamSearch.find("div", class_="subhead ng-scope ng-binding")
if SubheadTag:
print SubheadTag.get_text(strip=True)
get_FamSearch()
이것은 결과입니다 다음과 같이
<div class="person-info">
<div class="title ng-binding">Helen Brad in household of Geo Wilcock</div>
<div class="subhead ng-scope ng-binding" data-ng-if="!recordPersonCentric">Canada Census, 1901</div>
그래서 내 스크립트를 코딩 : 크롬의 요소를 검사하여, 나는 다음과 같이 부제목 텍스트 "캐나다 인구 조사 1901"가 포함되어 있는지 확인 부제목을 찾아 추출 할 수없이 :
는
Helen Brad
[Finished in 2.2s]
안녕 Alexce을, 감사합니다. 유효한 페이지 일 때 코드 줄이 잘 작동하지만 많은 페이지에 소제목 (또는 잘못된 링크)이 있거나 여러 개의 소제목이있는 페이지를 스캔하고 싶습니다. x = Soup_FamSearch.find ('dt', text = 'Title'). find_next_sibling ('dd'). text.strip(). 그런 다음 "x : if"와 같은 루프를 사용하여 이러한 부제목이있는 링크 만 출력하십시오. 하지만이 오류가 발생합니다 : "AttributeError : 'NoneType'개체에 'find_next_sibling'특성이 없습니다." BeautifulSoup이 그것을 찾지 만 실패하기 때문에 그 것처럼 보입니다. 어떻게 해결해야합니까? – KubiK888
@ KubiK888 당신은 지금까지 사용해온 접근법을 따라갈 수 있습니다 :'Soup_FamSearch.find ('dt', text = 'Title')'에 변수를 할당하고'find_next_sibling '을 얻기 전에'None'이 아닌지 확인하십시오()'. – alecxe
작동합니다. 고맙습니다. – KubiK888