Ich bin ziemlich neu in Python Beautiful Soup und ich habe nicht viel Wissen über HTML oder JS. Ich versuchte, bs4 zu verwenden, um alle xls-Dateien in diesem page herunterzuladen, aber es scheint, dass bs4 die Verbindungen unter "Anlage" Abschnitt nicht finden kann. Könnte mir jemand helfen?Kann den gewünschten Link zum Download nicht finden (Python BeautifulSoup)
Mein aktueller Code ist:
"""
Scrapping of all county-level raw data from
http://www.countyhealthrankings.org for all years. Data stored in RawData
folder.
Code modified from https://null-byte.wonderhowto.com/how-to/download-all-
pdfs-webpage-with-python-script-0163031/
"""
from bs4 import BeautifulSoup
import urlparse
import urllib2
import os
import sys
"""
Get all links
"""
def getAllLinks(url):
page=urllib2.urlopen(url)
soup = BeautifulSoup(page.read(),"html.parser")
links = soup.find_all('a', href=True)
return links
def download(links):
for link in links:
#raw_input("Press Enter to continue...")
#print link
#print "------------------------------------"
#print os.path.splitext(os.path.basename(link['href']))
#print "------------------------------------"
#print os.path.splitext(os.path.basename(link['href']))[1]
suffix = os.path.splitext(os.path.basename(link['href']))[1]
if os.path.splitext(os.path.basename(link['href']))[1] == '.xls':
print link #cannot find anything
currentLink = urllib2.urlopen(link)
links =
getAllLinks("http://www.countyhealthrankings.org/app/iowa/2017/downloads")
download(links)
(By the way, meine gewünschte Verbindung wie this aussieht.)
Dank!
Dank Bill. Das scheint zu funktionieren! Nur neugierig, wissen Sie, warum BeautifulSoup in diesem Fall nicht gut funktioniert? – jliu
Das sollte in meiner Antwort gewesen sein. Ich war misstrauisch, weil dein Code in Ordnung war. Ich habe versucht, BeautifulSoup zu verwenden, um alle Links auf der Seite zu finden und ihre hrefs auszudrucken. Nichts davon war das, was wir wollten, was mir nahelegte, dass die Seite wahrscheinlich Ajax benutzt, um ihren eigenen Inhalt zu laden. Das ist heutzutage praktisch die Norm. Sie können weiterhin BeautifulSoup verwenden, aber oft müssen Sie das DOM einer Seite mit den Funktionen eines Produkts wie Selen laden. BeautifulSoup kann nicht verarbeiten, was nicht in HTML geladen ist. –
Uh OK. Vielen Dank:)) – jliu