2014-12-17 3 views
0

정확하게 접근할지 잘 모르겠습니다. GET 요청을 사용하고 있습니다.요청 및 BeautifulSoup을 사용하여 HTML 구문 분석

con = s.get(url) 

con.content를 호출하면 전체 페이지가 나타납니다. 그러나 BS에 죄수를 보낼 때 :

soup = BeautifulSoup(con.content) 
print(soup.a) 

나는 아무 것도 얻지 못한다. 거기에 많은 태그가 JS 뒤에 있지 않고, 내가 con.content를 호출 할 때 미리 설정되어있다. 그러나 BS로 구문 분석하려고 할 때 대부분의 페이지가 없다.

+0

당신이 얻고있는 URL을 제공 할 수 있습니까? – mnjeremiah

+0

불행히도. 이것은 VPN과 함께 작업하는 일입니다. 특정 항목을 찾고 있다면 수정 된 코드를 제공 할 수 있습니다. –

+0

도움을 받으려면 BS로 전달하는 것을 확인하는 것이 도움이됩니다. – mnjeremiah

답변

2

변경 파서,

soup = BeautifulSoup(con.content,'html5lib') 
+0

그게 효과가! 감사. html5lib를 추가해야하는 이유는 무엇입니까? –

1

a 태그는 아마도 최상위에 없습니다.

soup.find_all('a') 

은 아마도 당신이 원하는 것일 것입니다.

일반적으로 lxml은 API에서 더 안정적이고 일관성이 있으며 빠른 것으로 나타났습니다. 예, 더욱 안정적입니다. BeautifulSoup이 구문 분석에 실패한 문서를 반복적으로 가지고 있지만, 강력한 모드 인 lxml은 여전히 ​​잘 작동합니다 (lxml.html.soupparser). 그리고 실제로 사용하기 쉬운 lxml.etree API가 있습니다.

+0

find_all도 아무 것도 반환하지 않습니다. 나는 lxml에게 한 번 시험해 보겠다. 제안에 감사드립니다 –

0

당신이 HTML을 보지 못하면서 해커 뉴스 사이트에서이 작업을 수행하고 예상대로 모든 태그를 반환합니다. 다음

pip install html5lib 

과 html5lib하는

import requests 
from bs4 import BeautifulSoup 

s = requests.session() 

con = s.get('https://news.ycombinator.com/') 

soup = BeautifulSoup(con.text) 

links = soup.findAll('a') 

for link in links: 
    print link 
관련 문제