2017-11-16 14 views
0

아마존 페이지에서 저자 이름을 추출하려고합니다. 문제는 같은 클래스의 태그가 너무 많아서 정확한 요소를 식별 할 수있는 다른 속성이 없다는 것입니다. 이제 저자명을 추출하고 싶습니다. 두 번째 span 태그에 있습니다. 우리가 할 수있는 find_all()을 사용하여 필요한 요소를 추출하는 방법

<div class="a-row a-spacing-none"> 
 
<span class="a-size-small a-color-secondary">by </span> 
 
<span class="a-size-small a-color-secondary"><a class="a-link-normal a-text-normal" href="/Arthur-Conan-Doyle/e/B000AQ43GQ/ref=sr_ntt_srch_lnk_2?qid=1510823399&amp;sr=8-2">Arthur Conan Doyle</a></span></div>

는 모두 스팬 태그에 대한 동일한 클래스가있다. 두 번째 span 태그가 필요합니다. 그리고 더 이상 tag는 모든 블록에 존재하지 않습니다. 그래서 저자 이름을 추출하려면 span 태그 만 사용해야합니다. 저자 이름을 어떻게 알 수 있습니까? 내가 BeautifulSoup로하고 selenium.My 코드를 사용하고

은 다음과 같습니다

 soup=BeautifulSoup(self.driver.page_source,"html.parser") 
    titles=soup.find_all("h2",{"class":"a-size-medium s-inline s-access-title a-text-normal"}) 
    authors=soup.find_all("span",{"class":"a-size-small a-color-secondary"}) 
    for value in range(len(titles)): 
     d={} 
     d["Title"]=titles[value].text 
     d["Author"]=authors[value+2].text 
     title.append(d) 

답변

-1

은 "범위"에 대한 위의 "DIV"요소를 찾습니다. 그런 다음 div 태그의 전체 텍스트를 추출하십시오. 코드의 모든 블록에 "by"하위 문자열이 있습니다. 그것을 사용하여 텍스트를 분할하고 d [ "제작자] 부분에 복사하십시오. "by"가 없으면 조건을 사용하여 사전에 복사하십시오. u를 직접 카피하면 (자), 배열 예외가 발생합니다. 그래서 사용하십시오.

temp = authors[value].text 
temp1 = temp.split("by") 
#print(temp[1]) 
if temp1[0]!=temp: 
    d["Author"] = temp1[1] 
else: 
    d["Author"] = "None" 
: 여기

코드입니다