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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python 3.x

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

受付中

年齢認証ページを回避したい

MHU_ME
MHU_ME

総合スコア8

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python 3.x

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1回答

0評価

2クリップ

235閲覧

投稿2022/06/17 23:17

編集2022/06/18 11:44

PythonでBlogをPDF化して保存しようとしています。

年齢認証があるページなのですが、そのページを回避する手続きが良く分かりません。
requests.session()を使って、クッションページ(年齢認証ページ)のはいボタンに相当するURLを掴む方法があるようなのですが、
肝心のはいボタンのURLにどのアドレスを与えれば良いのかが分からないです。

Blogのソースでの該当部分は以下のようになっています。

<body class="age_verify_page"> <div class="l_age_verify_header"> <div class="l_age_verify_header_inner"> <h1 class="service_logo"> <a href="//blog.2nt.com/"> <img src="//static.2nt.com/image/blog_admin/pc/2nt_logo.png" height="26" alt="2NT ブログ"> <span>ブログ</span> </a> </h1> </div> </div> <div class="l_age_verify_body"> <div class="l_age_verify_contents"> <div class="l_age_verify_contents_inner"> <div class="age_verify_blog"> <h1 class="age_verify_blog_name">DAITA 素人M妻の調教報告</h1> <p class="age_verify_blog_msg"> </p> </div> <div class="age_verify_box"> <h2 class="age_verify_box_title">年齢の確認</h2> <p class="age_verify_box_msg"> ここから先は、成人向け(アダルト)コンテンツです。<br> 成人向けの言葉や映像が含まれています。<br> 18歳未満の者が閲覧することは禁止します。 </p> <p class="age_verify_box_question"> あなたは18歳以上ですか? </p> <p class="age_verify_box_question_sup"> (自身の居住国や地域社会における規範・法律に従ってください。) </p> <div class="age_verify_box_answer"> <form action="//blog.2nt.com/" class="age_verify_box_form"> <button class="age_verify_box_answer_no" type="submit" formaction="//blog.2nt.com/"> <span class="age_verify_box_answer_no_text">いいえ</span><span class="age_verify_box_answer_no_small">(2NTブログTOPへ)</span> </button> <input type="hidden" name="age_verification" value="0"> </form> <form method="post" class="age_verify_box_form"> <button class="age_verify_box_answer_yes" type="submit" formmethod="post">はい(入場)</button> <input type="hidden" name="age_verification" value="1"> </form> </div> </div> <div class="age_verify_notes"> cookieを有効にする必要があります。 </div> </div> </div> </div> </body>

下記のソースの?????には何を与えれば良いのでしょうか?
あるいは、上手な回避方法がありますでしょうか?

よろしくお願いします。

import requests import pdfkit from bs4 import BeautifulSoup from requests.sessions import to_key_val_list # 'クッションページの「はい」のURL' url_certification = "?????" session = requests.session() session.get(url_certification) # 'スクレイピングしたいURL' vgm_url = 'http://daitawife.blog.2nt.com/blog-entry-64.html' html_text = requests.get(vgm_url).text soup = BeautifulSoup(html_text, 'html.parser') head = "<!doctype html><html lang=\"ja\"><head><meta charset=\"UTF-8\"></head>"\ "<style>\n.vertical{\n\twriting-mode:\n\tvertical-rl;font-size:0.8em;\n}\n"\ "em {\n\t color: #ff0000;\n}\n"\ "strong {\n\t color: #0000ff;\n\t font-size:1.6em; \n\t background-color:#ffff66;\n\t}\n"\ "</style>\n<div class=\"vertical\">\n" tail = "</div>\n\t</body>\n\t\t</html>" htm=head+html_text+tail print(htm) f=open("output.htm","wb") f.write(htm.encode("UTF-8")) f.close() options = { "page-size" : "A4", "margin-top" : "0.75in", "margin-right" : "0.75in", "margin-bottom" : "0.75in", "margin-left" : "0.75in", "encoding" : "UTF-8" } pdfkit.from_string(htm, "test.pdf",options=options)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

meg_

2022/06/18 00:23

・コードは「コードの挿入」で記入しましょう。 ・対象のサイトはスクレイピングしても良いサイトでしょうか?(利用規約等で禁止されていないか?)

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python 3.x

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。