0
私はPython Beautiful Soupにはかなり新しいので、htmlやjsに関する知識はあまりありません。私はこのpageですべてのxlsファイルをダウンロードするためにbs4を使用しようとしましたが、bs4が「添付ファイル」セクションの下にあるリンクを見つけることができないようです。誰かが私を助けてくれますか?ダウンロードに必要なリンクが見つかりません(Python BeautifulSoup)
私の現在のコードは次のとおりです。
"""
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)
(ちなみに、私の希望のリンクはthisのように見えます。)
ありがとう!
ありがとうございます。これはうまくいくようです!ちょうど不思議なことに、BeautifulSoupがこの場合にうまくいかない理由を知っていますか? – jliu
これは私の答えにあったはずです。あなたのコードは大丈夫だったので、私は疑いがありました。私はBeautifulSoupを使って、ページ上のすべてのリンクを見つけ、それらのHFSを印刷しようとしました。これらのどれも私たちが望むものではありませんでした。私には、Ajaxを使ってコンテンツを読み込む可能性が高いと示唆していました。これは、今日では事実上の規範です。 BeautifulSoupを使用することはできますが、しばしばセレンのような製品の機能を備えたページのDOMをロードする必要があります。 BeautifulSoupはHTMLに読み込まれていないものは処理できません。 –
ええ。ありがとう:)) – jliu