2017-02-10 7 views
1

Ich verwende folgenden Code. Alles funktioniert außer dem Teil "Zugehörigkeit". Es gibt einen Fehler: Attribute: ‚NoneType‘ Objekt kein Attribut ‚text‘ hat Ohne die .text, es gibt alles - ganzen Code innerhalb der KlasseWebscrapping mit Python zum Extrahieren von Daten

import requests 
import bs4 
import re 

headers = {'User-Agent':'Mozilla/5.0'} 

url = 'http://pubs.acs.org/toc/jacsat/139/5' 
html = requests.get(url, headers=headers) 

soup = bs4.BeautifulSoup(html.text, 'lxml') 

tags = soup.findAll('a', href=re.compile("full")) 

for tag in tags: 
    new_url = tag.get('href', None) 
    newurl = 'http://pubs.acs.org' + new_url 
    newhtml = requests.get(newurl, headers=headers) 
    newsoup = bs4.BeautifulSoup(newhtml.text, 'lxml') 

    article_title = newsoup.find(class_="articleTitle").text 
    print(article_title) 

    affiliations = newsoup.find(class_="affiliations").text 
    print(affiliations) 

    authors = newsoup.find(id="authors").text 
    print(authors) 

    citation_year = newsoup.find(class_="citation_year").text 
    print(citation_year) 

    citation_volume = newsoup.find(class_="citation_volume").text 
    print(citation_volume) 

    citation = newsoup.find(id="citation").text 
    print(citation) 

    pubdate = newsoup.find(id="pubDate").text 
    print(pubdate) 

Antwort

1

Diese Ausnahme wurde ausgelöst, weil es nicht tat finde irgendein Element mit der Klasse "Zugehörigkeit". Ich habe überprüft und konnte kein Element mit diesem Klassenwert in der Quell-HTML (oder einem anderen Attribut zu diesem Thema) in der ersten URL Ihres Skripts finden.

Ich würde den Fehler abfangen, um zu vermeiden, dass Ihr Skript bricht und None oder eine Standardzeichenfolge zurückgibt, wenn es das Element nicht findet.

So etwas wie das funktionieren würde:

try: 
    affiliations = newsoup.find(class_="affiliations").text 
    print(affiliations) 
except AttributeError: 
    affiliations = None 
Verwandte Themen