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)
3 Réponses :
La fonction Vous pouvez vérifier simple ceci: p> Find_All code> peut renvoyer une liste vide, ce qui peut vous amener à avoir une erreur.
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
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: qui imprimera: p> < Pré> xxx pré> p>
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:
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