0
votes

Obtenir une erreur en raclant les dates

Je raclage des listes de présidents américains en utilisant une belle soupe et des demandes. Je veux gratter à la fois la date, par exemple le début de la présidence et la fin de la date de la présidence et pour une raison quelconque, il affiche l'index de la liste hors de portée de la plage. Je vais vous fournir le lien afin que vous puissiez mieux comprendre. Lien de site Web: https://en.wikipedia.org/wiki/list_of_presidents_of_the_united_states

from bs4 import BeautifulSoup
from urllib.request import urlopen as uReq
my_url = 'https://en.wikipedia.org/wiki/List_of_presidents_of_the_United_States'
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = BeautifulSoup(page_html , 'html.parser' )
containers = page_soup.find_all('table' , class_ = 'wikitable')
#print(containers[0])
#print(len(containers))
#print(soup.prettify(containers[0]))
container = containers[0]
date =container.find_all('span' , attrs = {'class': 'date'})
#print(len(date))
#print(date[0].text)

for container in containers:
    date_container = container.find_all('span', attrs={'class': 'date'})
    print(date_container[0].text)


0 commentaires

3 Réponses :


1
votes

La fonction Find_All peut renvoyer une liste vide, ce qui peut vous amener à avoir une erreur.

Vous pouvez vérifier simple ceci: xxx < / p>


1 commentaires

Hey merci d'avoir aidé, mais cela ne donne que l'index 0 date ou index 1 date si je le change, mais je veux chercher toutes les dates de la table principale



0
votes

Comme vous avez les dernières lignes de code, qui stockent toutes les allures de dates sur la première table "Wikitative", vous pouvez faire une compréhension de la liste: xxx

qui imprimera: < Pré> xxx


0 commentaires

0
votes

Comme il a

code> tags, avez-vous envisagé d'utiliser des pandas ' .read_html () code>? Il utilise Beautifulsoup sous le capot. Prend beaucoup du travail et la met directement dans un fichier de données pour vous. Le seul travail que nécessaire est une manipulation ou un nettoyage / filtrage / filtrage: xxx pré>

sortie: strong> p>

print (df.to_string())
                      Name                  Start                               End
0        George Washington      April 30, 1789[d]                     March 4, 1797
1               John Adams          March 4, 1797                     March 4, 1801
2         Thomas Jefferson          March 4, 1801                     March 4, 1809
3            James Madison          March 4, 1809                     March 4, 1817
4             James Monroe          March 4, 1817                     March 4, 1825
5        John Quincy Adams          March 4, 1825                     March 4, 1829
6           Andrew Jackson          March 4, 1829                     March 4, 1837
7         Martin Van Buren          March 4, 1837                     March 4, 1841
8   William Henry Harrison          March 4, 1841     April 4, 1841(Died in office)
9               John Tyler       April 4, 1841[i]                     March 4, 1845
10           James K. Polk          March 4, 1845                     March 4, 1849
11          Zachary Taylor          March 4, 1849      July 9, 1850(Died in office)
12        Millard Fillmore        July 9, 1850[k]                     March 4, 1853
13         Franklin Pierce          March 4, 1853                     March 4, 1857
14          James Buchanan          March 4, 1857                     March 4, 1861
15         Abraham Lincoln          March 4, 1861      April 15, 1865(Assassinated)
16          Andrew Johnson         April 15, 1865                     March 4, 1869
17        Ulysses S. Grant          March 4, 1869                     March 4, 1877
18     Rutherford B. Hayes          March 4, 1877                     March 4, 1881
19       James A. Garfield          March 4, 1881  September 19, 1881(Assassinated)
20       Chester A. Arthur  September 19, 1881[n]                     March 4, 1885
21        Grover Cleveland          March 4, 1885                     March 4, 1889
22       Benjamin Harrison          March 4, 1889                     March 4, 1893
23        Grover Cleveland          March 4, 1893                     March 4, 1897
24        William McKinley          March 4, 1897  September 14, 1901(Assassinated)
25      Theodore Roosevelt     September 14, 1901                     March 4, 1909
26     William Howard Taft          March 4, 1909                     March 4, 1913
27          Woodrow Wilson          March 4, 1913                     March 4, 1921
28       Warren G. Harding          March 4, 1921    August 2, 1923(Died in office)
29         Calvin Coolidge      August 2, 1923[o]                     March 4, 1929
30          Herbert Hoover          March 4, 1929                     March 4, 1933
31   Franklin D. Roosevelt          March 4, 1933    April 12, 1945(Died in office)
32         Harry S. Truman         April 12, 1945                  January 20, 1953
33    Dwight D. Eisenhower       January 20, 1953                  January 20, 1961
34         John F. Kennedy       January 20, 1961   November 22, 1963(Assassinated)
35       Lyndon B. Johnson      November 22, 1963                  January 20, 1969
36           Richard Nixon       January 20, 1969          August 9, 1974(Resigned)
37             Gerald Ford         August 9, 1974                  January 20, 1977
38            Jimmy Carter       January 20, 1977                  January 20, 1981
39           Ronald Reagan       January 20, 1981                  January 20, 1989
40       George H. W. Bush       January 20, 1989                  January 20, 1993
41            Bill Clinton       January 20, 1993                  January 20, 2001
42          George W. Bush       January 20, 2001                  January 20, 2009
43            Barack Obama       January 20, 2009                  January 20, 2017
44            Donald Trump       January 20, 2017                         Incumbent


0 commentaires