2017-12-14 19 views
1

나는 웹 사이트를 긁어 내려고하고있다. 두 자원에서 긁어 낸 것을 배웠습니다 : 하나는 a 태그에서 href를 얻기 위해 tag.get('href')을 사용했고, 하나는 tag['href']을 사용했습니다. 내가 아는 한, 그들은 모두 똑같은 일을합니다. 이 코드 시도 때 :다른 방법으로 아름다운 수프를 사용하여 href 얻기

link_list = [l.get('href') for l in soup.find_all('a')] 

를가 아니라 사전에 액세스하는 방식에의 .get 방법으로 일했다.

link_list = [l['href'] for l in soup.find_all('a')] 

이 값은 KeyError입니다. 나는 근근이 살아가는 것에 아주 신심이 많으므로 바보 같으면 용서해주십시오.

편집 - 두 메소드 모두 find_all 대신 find 메소드에 대해 작업했습니다.

+1

key'가 딕셔너리에 존재하는 '경우가 두 가지 다른 방법입니다 - 똑같이 작동하지만,'key'가 당신의 dict에 없다면'l.get'은 기본값 (https://docs.python.org/2/library/stdtypes.html#dict.get)을 반환하고'l [key]'raised KeyError – SatanDmytro

답변

0

HTML 문자열에 "href"가 없습니까? 예를 들어 :

from bs4 import BeautifulSoup 


doc_html = """<a class="vote-up-off" title="This question shows research effort; it is useful and clear">up vote</a>""" 
soup = BeautifulSoup(doc_html, 'html.parser') 
ahref = soup.find('a') 
ahref.get('href') 

아무것도 일어나지 않을 것이다, 그러나

ahref['href'] 

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/home/sergey/.virtualenvs/soup_example/lib/python3.5/site- 
packages/bs4/element.py", line 1011, in __getitem__ 
return self.attrs[key] 
KeyError: 'href' 
'href' 
+0

아니요, 'a'태그에는 'href'가 있습니다. 나는 근근이 살아가고있는 웹 사이트를 언급하는 것을 잊었다. 여기 https://www.crummy.com/software/BeautifulSoup/ 링크가 있습니다. –

0

당신은 BeautifulSouphref 속성 만 기존과 연결을 찾을 수 있습니다. 테스트

당신은 find_all()를 통해, 두 가지 일반적인 방법으로 그것을 할 수

:

link_list = [a['href'] for a in soup.find_all('a', href=True)] 

또는을 가진 CSS selector :

link_list = [a['href'] for a in soup.select('a[href]')]