2015-03-25 2 views
0

Мне нужно получить href, содержащий /questions/20702626/javac1-8-class-not-found. Но выход я получаю на ниже код //stackoverflow.com:Извлечь первый href из тега div

from bs4 import BeautifulSoup 
import urllib2 

url = "http://stackoverflow.com/search?q=incorrect+operator" 
content = urllib2.urlopen(url).read() 

soup = BeautifulSoup(content) 

for tag in soup.find_all('div'): 
    if tag.get("class")==['summary']: 
     for tag in soup.find_all('div'): 
      if tag.get("class")==['result-link']: 
       for link in soup.find_all('a'): 
         print link.get('href') 
        break; 

ответ

1

Вместо того, чтобы вложенные циклы, написать CSS selector:

for link in soup.select('div.summary div.result-link a'): 
    print link.get('href') 

который является не только более удобным для чтения, но и решает проблему. Он печатает:

/questions/11977228/incorrect-answer-in-operator-overloading 
/questions/8347592/sizeof-operator-returns-incorrect-size 
/questions/23984762/c-incorrect-signature-for-assignment-operator 
... 
/questions/24896659/incorrect-count-when-using-comparison-operator 
/questions/7035598/patter-checking-check-of-incorrect-number-of-operators-and-brackets 

Дополнительное примечание: вы можете посмотреть в использовании StackExchange API вместо текущего веб-соскоб/HTML-разборе подхода.

Смежные вопросы