質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

2572閲覧

pythonを用いてスクレイピングをする際の401の解決方法(heroku)

bobchan

総合スコア8

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/03/18 16:53

編集2022/01/12 10:55

heroku上でpythonによるwebスクレイピングを行った際にでる401を解決したいです

pythonを用いてスクレイピングした内容を,linenotifyを用いて通知するというものを作ろうとしています
出来上がったコードは,ローカル環境下であれば問題なく通知までされるのですが,herokuにあげると401がでてしまいます

発生している問題・エラーメッセージ

Exception Error: HTTP Error 401: Unauthorized

該当のソースコード

Python

1# -*- coding: utf-8 -*- 2import requests 3from bs4 import BeautifulSoup 4import json 5import urllib.parse 6import urllib.request 7import os 8import sys 9 10 11headers = { 12 "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)", 13 } 14 15#乃木坂HP 16target_url = "http://www.nogizaka46.com/"; 17 18 19# LINE notify's API 20 21 22def getNogi(): 23 #Requestsを使って、webから取得 24 r = requests.get(target_url, headers=headers, verify=False) 25 #要素を抽出 26 soup = BeautifulSoup(r.text, 'lxml') 27 28 #soup.findを用いて,今日のscheduleを抽出 29 elems = soup.find(id="idxschedule") 30 data = '\n ' 31 for e in elems.select('ul > li'): 32 data += e.getText() + '\n' 33 34 return data 35 36 37def send_nogi_info(msg): 38 39 40def main(): 41 send_nogi_info(getNogi()) 42 43if __name__ == '__main__': 44 main()

試したこと

headersの内容が不適切だと考え,いくつか試したのですがうまくできませんでした.
print(r.status_code)をしたところ,200が返ってきています
アドバイスよろしくお願い致します.

補足情報(FW/ツールのバージョンなど)

herokuにあげたrequirements.txt の内容です

beautifulsoup4==4.6.0
APScheduler==3.5.1
requests==2.18.4
urllib3==1.22
lxml==3.8.0

local環境

osx 10.12.6
python 3.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2018/03/18 23:32

通常の海外からのアクセスは出来るサイトでしょうか?
bobchan

2018/03/19 01:29

https://fmoga.com/chrome_vpn こちらのchrome拡張にて,試しにアメリカからアクセスしてみましたが,問題なくアクセスできました!
guest

回答1

0

ユーザエージェントを指定しない場合,botとして認識されてアクセスを拒否される場合があるので今回の問題もそのせいの可能性が高いです.(参考

投稿2020/03/20 06:41

dark-eater-kei

総合スコア1248

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問