2017-01-01 3 views
-1

나는이 html 코드아름다운 수프

<a class="pageNum taLnk" data-offset="10" data-page-number="1" 
href="www.blahblahblah.com/bb32123">Page 1 </a> 
<a class="pageNum taLnk" data-offset="20" data-page-number="2" 
href="www.blahblahblah.com/bb45135">Page 2 </a> 

당신이 볼 수 있듯이, 링크 (HREF)이 무질서 있습니다에 대한 특정 링크를 추출하려고를 사용하여 HREF 얻기 때문에 내가 사용에 대한 패턴이없는 한 내가 BeautifulSoup를 사용하여 href를 수동으로 추출해야한다는 것을 의미합니다.

특히 href를 얻고 싶습니다.

다음 코드는 지금 사용할 수 있습니다. 당신이 볼 수 있듯이

from bs4 import BeautifulSoup 
import urllib 

url = 'https://www.tripadvisor.com/ShowUserReviews-g293917-d539542-r447460956-Duangtawan_Hotel_Chiang_Mai-Chiang_Mai.html#REVIEWS' 
page = urllib.request.urlopen(url) 
soup = BeautifulSoup(page, 'html.parser') 
for link in soup.find_all('a', attrs = {'class' : 'pageNum taLnk'}): 
    print (link) 

는, 나는 그런 data-page-number = "2" 또는 data-offset = "20"로 태그 내에서 정보의 추가 비트 액세스 어쨌든 2 페이지를 위해 특별히 href가 정보를 얻기 위해 시도에 있는가 붙어있다.

답변

2
page_2 = soup.find('a', attrs = {'data-page-number' : '2'}) 

에 상관없이 현재 페이지가 무엇인지 다음 페이지를 얻을하려는 경우에만, 다음 페이지의 URL을 찾아야한다, 당신에게 2 페이지를 얻을 것이다 :

next_page = soup.find('a', attrs = {'class' = 'nav next rndBtn ui_button primary taLnk'}) 

일부를

data_soup = BeautifulSoup('<div data-foo="value">foo!</div>') 
data_soup.find_all(data-foo="value") 
# SyntaxError: keyword can't be an expression 

당신은 할 수 있습니다 HTML 5의 데이터 - * 속성과 같은 속성 키워드 인수의 이름으로 사용할 수없는 이름이 사전에 넣어와 바인드합니다 인수로) (find_all에 사전을 전달하여 검색에서 이러한 특성을 사용하여 :

data_soup.find_all(attrs={"data-foo": "value"}) 
# [<div data-foo="value">foo!</div>] 
+0

아 .. 내가 왜 그 생각을하지 않았다! 감사합니다! ! –

+0

@ Niche.P 코드를 업데이트하고 답변을 수락하십시오. –

+0

yup, 나는 2 분 남았던 타이머를 기다리고있다. 감사 –