2017-03-14 4 views
1

Wie der Titel sagt, versuche ich den Titel eines Links zu bekommen, der sich innerhalb einer Zelle befindet. This is die Website, von der ich meine Sachen bekomme. Ich habe auch this Frage, gesehen, das ist, wo ich von meinen letzten paar Zeilen Code bekam, aber es hat nicht ganz fertig es für michErhalte den Titel eines Links mit BeautifulSoup

Ich versuche, den Titel des Link in der ersten Spalte zu bekommen (oder erste Zelle jeder Zeile). Ich kann alle des HTML-Codes in der Zelle bekommen, aber ich habe Probleme, nagelnd erhalten nur den Titel. Dies ist, was ich mit so weit habe kommen

URL = 'http://theescapists.gamepedia.com/Crafting' 
get_page = requests.get(URL) 
plain_text = get_page.text 
soup = BeautifulSoup(plain_text, 'html.parser') 


for table_tag in soup.find_all('table'): 
    for each_row in table_tag.find_all('tr'): 
     links = each_row.find('a', href=True) 
     title = links.get('title') 
     print(title) 
     print('') 

Wenn ich nur die links Abschnitt drucken, den gesamten Code in jeder Zelle wird gedruckt.

ich eine Störung erhalte, die AttributeError: 'NoneType' object has no attribute 'get' sagt, wenn ich das title Teil ausdrucken, das verwirrt mich, weil ich print(type(links)) and I get a bs4.element.Tag back, which makes me think I should be able to look through for a title` Tag getan haben.

Als Rekapitulation (dies ein wenig lang schien), ich will in jeder Tabelle wollen

Antwort

1

tr Tag Dose enthält th Tag, das a Tag nicht hat, sollten Sie die a Tag überprüfen, bevor Sie darauf zugreifen:

In [100]: for table_tag in soup.find_all('table'): 
    ...:  for each_row in table_tag.find_all('tr'): 
    ...:   links = each_row.find('a', href=True) 
    ...:   if links: # check before you access 
    ...:    title = links.get('title') 
    ...:    print(title) 
    ...:    print('') 
0

Ich denke, links.attrs['title'] ist, was Sie jeden Link, um den Titel-Tag von der ersten Zelle zu erhalten.

Mein Code:

for table_tag in soup.find_all('table'): 
    for each_row in table_tag.find_all('tr'): 
     links = each_row.find('a', href=True) 
     try: 
      title = links.attrs['title'] 
      print(title) 
      print('') 
     except AttributeError: 
      pass 

Hinweis: Die AttributeError wird die Kopfzeile der Tabelle zu handhaben, die keine title hat.

Verwandte Themen