2017-10-26 6 views
-4

Ich habe eine Liste von URLs, wo ich Schabe Titelnamen jeder Seite durch die gesamte Liste der URLs LoopingAttribute: ‚NoneType‘ Objekt hat kein Attribut ‚string

Das Problem ist, wenn die URL ungültig ist in In der Liste bricht der Code zusammen. so versuche ich zu verwenden versuchen und außer den Fehler passieren wie immer versuchen, mit Ausnahme nicht

Arbeits

Unten ist der Code ich verwende, (bitte korrigieren, wenn ich hier etwas fehlt bin)

import requests 
    from bs4 import BeautifulSoup as BS 
    url_list = ['http://www.aurecongroup.com', 
    'http://www.bendigoadelaide.com.au', 
    'http://www.burrell.com.au', 
    'http://www.dsdbi.vic.gov.au', 
    'http://www.energyaustralia.com.au', 
    'http://www.executiveboard.com', 
    'http://www.mallesons.com', 
    'https://www.minterellison.com', 
    'http://www.mta.org.nz', 
    'http://www.services.nsw.gov.au'] 

for link in url_list: 
    try: 
     r = requests.get(link)  
     r.encoding = 'utf-8' 
     html_content = r.text 
     soup = BS(html_content, 'lxml') 
     df = soup.title.string 
     print(df) 

    except IOError: 
     pass 

Die Ausführung des obigen Codes gibt mir AttributeError: 'NoneType' object has no attribute 'string'. Kann mir jemand dabei helfen?

+4

Hinweis: Kapitalisierung Fragen und Angelegenheiten Vertiefung. – Kevin

+3

könnte nur ein Tippfehler sein, aber 'try' ist alles Kleinbuchstaben und Sie haben ein Einrückungsproblem in Ihrer' for' Schleife. Anscheinend ist es kein Tippfehler, seit das Fixieren funktioniert. –

+3

Wenn Sie möchten, dass die Verarbeitung fortgesetzt wird, wenn ein Element fehlschlägt, müssen Sie den "try ... except" * in den Block "for" verschieben und den Schleifenkörper umschließen. – ryachza

Antwort

1

Wie wäre es damit:

import requests 
from bs4 import BeautifulSoup 

url_list = [ 
    'http://www.aurecongroup.com', 
    'http://www.bendigoadelaide.com.au', 
    'http://www.burrell.com.au', 
    'http://www.dsdbi.vic.gov.au', 
    'http://www.energyaustralia.com.au', 
    'http://www.executiveboard.com', 
    'http://www.mallesons.com', 
    'https://www.minterellison.com', 
    'http://www.mta.org.nz', 
    'http://www.services.nsw.gov.au' 
    ] 

for link in url_list: 
    res = requests.get(link)  
    soup = BeautifulSoup(res.text, 'lxml') 
    try: 
     df = soup.title.string.strip() 
    except Exception: 
     df = "" 
    print(df) 

Teil Ausgabe einschließlich none:

Aurecon – A global engineering and infrastructure advisory company 
             ####It gives the none value 
Stockbroking & Superannuation Brisbane | Burrell 
Home | Economic Development 
Electricity Providers - Gas Suppliers | EnergyAustralia 
2

diese Execute:

import requests 
from bs4 import BeautifulSoup as BS 
url_list = ['Http://www.aurecongroup.com', 
'Http://www.burrell.com.au', 
'Http://www.dsdbi.vic.gov.au', 
'Http://www.energyaustralia.com.au', 
'Http://www.executiveboard.com', 
'Http://www.mallesons.com', 
'Https://www.minterellison.com', 
'Http://www.mta.org.nz', 
'Http://www.services.nsw.gov.au'] 

try: 
    for link in url_list: 
     r = requests.get(link)  
     r.encoding = 'utf-8' 
     html_content = r.text 
     soup = BS(html_content, 'lxml') 
     df = soup.title.string 
     print(df) 

except IOError: 
    pass 
0

Dies behebt den Einzug ERROR

import requests 

from bs4 import BeautifulSoup as BS 

url_list = [ 
    'Http://www.aurecongroup.com', 
    'Http://www.burrell.com.au', 
    'Http://www.dsdbi.vic.gov.au', 
    'Http://www.energyaustralia.com.au', 
    'Http://www.executiveboard.com', 
    'Http://www.mallesons.com', 
    'Https://www.minterellison.com', 
    'Http://www.mta.org.nz', 
    'Http://www.services.nsw.gov.au' 
] 

try: 
    for link in url_list: 
     r = requests.get(link)  
     r.encoding = 'utf-8' 
     html_content = r.text 
     soup = BS(html_content, 'lxml') 
     df = soup.title.string 
     print(df) 

except IOError: 
    pass 
+0

Das ist nicht anders als der Code in der Frage! –

+0

Dies scheint nichts zu beheben. Der einzige Unterschied, den ich zwischen diesem und dem Original sehe, ist ein Newline nach den Importen. – ryachza

+0

Ich habe es bearbeitet. Es hat sich selbst zurückgesetzt, als ich geschrieben sorry – EgMusic

0

Try: Klein try: sein sollte. Und Fehleingabe nach for link in url_list:.

import requests 
from bs4 import BeautifulSoup as BS 
url_list = ['Http://www.aurecongroup.com', 
      'Http://www.burrell.com.au', 
      'Http://www.dsdbi.vic.gov.au', 
      'Http://www.energyaustralia.com.au', 
      'Http://www.executiveboard.com', 
      'Http://www.mallesons.com', 
      'Https://www.minterellison.com', 
      'Http://www.mta.org.nz', 
      'Http://www.services.nsw.gov.au'] 

try: 
    for link in url_list: 
     r = requests.get(link) 
     r.encoding = 'utf-8' 
     html_content = r.text 
     soup = BS(html_content, 'lxml') 
     df = soup.title.string 
     print(df) 

except IOError: 
    pass 
+0

Kein zusätzlicher Beitrag im Vergleich zu der Antwort früher bereitgestellt. Sie sind eingeladen, zur Verbesserung der vorherigen Antwort beizutragen. –

3

Ihre try-catchin die Schleife bewegen, wenn Sie nur, dass fehlerhafte Iteration übersprungen werden soll.

for link in url_list: 
    try: 
     r = requests.get(link)  
     ... 
    except (IOError, AttributeError): 
     pass 
+0

Hallo @COLDSPEED Ich bekomme diesen Fehler in der Mitte, während ich den Code ausführen "AttributeError: 'NoneType' Objekt hat kein Attribut 'string'" – Mahesh

+0

@MaheshVarma Eine Bearbeitung gemacht. Alle weiteren Fragen gehen in einen neuen Beitrag.Wenn das half, vergiss nicht darüber abzustimmen und akzeptiere die Antwort. Vielen Dank. –

+0

@MaheshVarma Wenn Sie meine Antwort aufheben möchten, würde ich eine Erklärung dafür, warum. –

Verwandte Themen