#前提・実現したいこと
行政がウェブサイトで公開しているデータを自動でダウンロードしてくるクローラーを作成しています。
ダウンロードボタンのhtmlソースは以下のようになっており、javascriptが埋め込まれているようです。
html
1<a href="javascript:*****_download('*****.zip')">ダウンロード</a>
市販の技術書などを参考に以下のようなコードを作成したのですが、エラーになってしまいます。
クローラー・スクレイピングは初心者でして、解決策がわからず、ご教示いただけますと幸いです。
python
1# ライブラリをインポート 2import requests 3from bs4 import BeautifulSoup 4import time 5from selenium import webdriver 6 7# 対象のURL 8url = "https://**********.html" 9EXTENTION = u".zip" 10 11# URLの情報を取得 12r = requests.get(url) 13soup = BeautifulSoup(r.content, "lxml") 14links = soup.findAll('a') # リンク先(aタグ)を抽出 15download_urls = [] 16 17# URLの抽出 18for link in links: 19 href = link.get('href') 20 if href and EXTENTION in href: # hrefの中に"zip"が含まれる場合 21 download_urls.append(href) 22 23# ファイルのダウンロード 24for download_url in download_urls[:3]: 25 # 一秒スリープ 26 time.sleep(1) 27 28 file_name = download_url.split(":")[-1] 29 req = browser.execute_script(download_url) 30 31 # ファイルの保存 32 if req.status_code == 200: 33 f = open(file_name, 'w') 34 f.write(req.content) 35 f.close()
#エラーメッセージ
$ python downloader.py /anaconda3/lib/python3.6/site-packages/bs4/__init__.py:181: UserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("lxml"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently. The code that caused this warning is on line 13 of the file downloader.py. To get rid of this warning, change code that looks like this: BeautifulSoup(YOUR_MARKUP}) to this: BeautifulSoup(YOUR_MARKUP, "lxml") markup_type=markup_type)) Traceback (most recent call last): File "downloader.py", line 30, in <module> req = requests.get(download_url) File "/anaconda3/lib/python3.6/site-packages/requests/api.py", line 72, in get return request('get', url, params=params, **kwargs) File "/anaconda3/lib/python3.6/site-packages/requests/api.py", line 58, in request return session.request(method=method, url=url, **kwargs) File "/anaconda3/lib/python3.6/site-packages/requests/sessions.py", line 508, in request resp = self.send(prep, **send_kwargs) File "/anaconda3/lib/python3.6/site-packages/requests/sessions.py", line 612, in send adapter = self.get_adapter(url=request.url) File "/anaconda3/lib/python3.6/site-packages/requests/sessions.py", line 703, in get_adapter raise InvalidSchema("No connection adapters were found for '%s'" % url) requests.exceptions.InvalidSchema: No connection adapters were found for 'javascript:*****_download('*****.zip')'
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。