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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Scratch

Scratchは、MITメディアラボが開発した子ども向けプログラミング言語。コードを記述することなくブロックを組み合わせてプログラミングを行うビジュアルプログラミング言語です。Scratch2.0からは、Web上でのプログラミングも可能になっています。

Beautiful Soup

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

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Python

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

Q&A

解決済

2回答

1990閲覧

urllib.requestで拾ってきたファイルが中身が違う

chgrios

総合スコア70

Scratch

Scratchは、MITメディアラボが開発した子ども向けプログラミング言語。コードを記述することなくブロックを組み合わせてプログラミングを行うビジュアルプログラミング言語です。Scratch2.0からは、Web上でのプログラミングも可能になっています。

Beautiful Soup

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

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Python

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

0グッド

0クリップ

投稿2020/01/28 04:02

編集2020/01/28 05:12

python

1f2 = request.urlopen([ターゲットのurl]) 2 html2 = f2.read() 3 soup2 = BeautifulSoup(html2,'html.parser') 4 print(soup2)

このようなpythonコードで抽出したHTMLソースコード(print(soup2)部分)が「該当URLをブラウザで開いてsave as で保存したソース」と違っていました。
どのようにしたら「該当URLをブラウザで開いてsave as で保存したソース」を抽出できますか?

抽出したが中身は違っていたソースコード↓

html

1<!DOCTYPE doctype html> 2<html lang="en"><head><meta charset="utf-8"/><link href="/favicon.ico" rel="shortcut icon"/><meta content="width=device-width,initial-scale=1,shrink-to-fit=no" name="viewport"/><meta content="#000000" name="theme-color"/><link href="/manifest.json" rel="manifest"/><title>TFTACTICS.GG - Teamfight Tactics Database, Item Builder, Team Builder</title><script>!function(t,a){if(function(e){"string"==typeof e&&(e=[e]);for(var n=0;n<e.length;n++)a.cookie=e[n]+"=;max-age=-1;domain=."+a.domain+";path=/"}(["euconsent","eupubconsent","googlepersonalization"]),!t.__cmp){t.__cmp=function(){(t.attachEvent||t.addEventListener)("message",function(e){t.__cmp.receiveMessage(e)},!1),function e(){if(!t.frames.__cmpLocator)if(a.body){var n=a.createElement("iframe");n.style.display="none",n.name="__cmpLocator",a.body.appendChild(n)}else setTimeout(e,5)}();var o=[],e=function(e,n,a){"ping"===e?a&&a({gdprAppliesGlobally:!!(t.__cmp&&t.__cmp.config&&t.__cmp.config.storeConsentGlobally),cmpLoaded:!1}):o.push({command:e,parameter:n,callback:a})};return e.commandQueue=o,e.receiveMessage=function(e){var n=e&&e.data&&e.data.__cmpCall;n&&o.push({callId:n.callId,command:n.command,parameter:n.parameter,event:e})},e.config=t.cmpConfig||{globalVendorListLocation:"https://cmp.network-n.com/vendorlist.json"},e}();var e=a.createElement("script");e.async=!0,e.src="https://cmp.network-n.com/js/cmp.complete.bundle.js",a.getElementsByTagName("head")[0].appendChild(e)}}(window,document)</script><script async="" src="https://www.googletagmanager.com/gtag/js?id=UA-61167242-4"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-61167242-6")</script><script>!function(o,n){function t(){var o,c,e;_localCS.loaded||(_comscore.push({c1:"2",c2:"25110922",cs_ucfr:_localCS.consent}),c=(o=n).createElement("script"),e=o.getElementsByTagName("script")[0],c.async=!0,c.src=("https:"==o.location.protocol?"https://sb":"http://b")+".scorecardresearch.com/beacon.js",e.parentNode.insertBefore(c,e),_localCS.loaded=!0)}o._localCS={consent:null,loaded:!1,tx:null},o._comscore=o._comscore||[],o.__cmp&&(o.__cmp("getVendorConsents",[77],function(o,c){function e(o){return"object"==typeof o}c&&(_localCS.consent=e(o)&&e(o.vendorConsents)&&o.vendorConsents[77],_localCS.consent=_localCS.consent?"1":"0",t())}),function c(){o.__cmp("ping",null,function(o){if(!1===o.cmpLoaded){if(null===_localCS.tx)return void(_localCS.tx=setTimeout(c,3e3));t()}o.cmpLoaded&&(clearTimeout(_localCS.tx),t())})}()),o.__cmp||t()}(window,document)</script><noscript><img src="https://sb.scorecardresearch.com/p?c1=2&amp;c2=25110922&amp;cv=2.0&amp;cj=1"/></noscript><script src="/tftactics.min.js"></script><script async="" src="//tag.escalated.io?i=dnBYRYjwu3atX"></script><link href="/static/css/2.88f38d9b.chunk.css" rel="stylesheet"/><link href="/static/css/main.5a3d682d.chunk.css" rel="stylesheet"/></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(f){function e(e){for(var r,t,n=e[0],o=e[1],u=e[2],l=0,a=[];l<n.length;l++)t=n[l],Object.prototype.hasOwnProperty.call(c,t)&&c[t]&&a.push(c[t][0]),c[t]=0;for(r in o)Object.prototype.hasOwnProperty.call(o,r)&&(f[r]=o[r]);for(s&&s(e);a.length;)a.shift()();return p.push.apply(p,u||[]),i()}function i(){for(var e,r=0;r<p.length;r++){for(var t=p[r],n=!0,o=1;o<t.length;o++){var u=t[o];0!==c[u]&&(n=!1)}n&&(p.splice(r--,1),e=l(l.s=t[0]))}return e}var t={},c={1:0},p=[];function l(e){if(t[e])return t[e].exports;var r=t[e]={i:e,l:!1,exports:{}};return f[e].call(r.exports,r,r.exports,l),r.l=!0,r.exports}l.m=f,l.c=t,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(r,e){if(1&e&&(r=l(r)),8&e)return r;if(4&e&&"object"==typeof r&&r&&r.__esModule)return r;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:r}),2&e&&"string"!=typeof r)for(var n in r)l.d(t,n,function(e){return r[e]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="/";var r=this.webpackJsonpwestmarch=this.webpackJsonpwestmarch||[],n=r.push.bind(r);r.push=e,r=r.slice();for(var o=0;o<r.length;o++)e(r[o]);var s=n;i()}([])</script><script src="/static/js/2.da7cb3d7.chunk.js"></script><script src="/static/js/main.7fe4104d.chunk.js"></script></body></html>

本家のurl↓

https://tftactics.gg/champions/aatrox

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

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

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

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

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

quickquip

2020/01/28 04:32 編集

> 抽出したが中身は違っていたソースコード どうやって表示しましたか? > 抽出したが中身は違っていたソースコード 具体的にどう違っているとあなたは認識していますか? 例えば <link href="/favicon.ico" rel="shortcut icon"/> と <link rel="shortcut icon" href="/favicon.ico"/> が、「違っている」か、「同じ」かは目的や立場で違いますから、違っていましたとだけ表明されても困るわけです。
chgrios

2020/01/28 04:52

>どうやって表示しましたか? 普通に上記のsoup2をprintしただけです > 抽出したが中身は違っていたソースコード 具体的にどう違っているとあなたは認識していますか? 根本から違います。URLをみていただくとわかりますが、本来ならはHealth:などのテキスト情報がh2タグに記述されているのにもかかわらず、抽出してきたファイルには、h2タグどころか中身のテキストを記述している部分がありませんでした、実際にページにいってsave as で保存してひかくしてみてください
quickquip

2020/01/28 05:00 編集

つまり 「該当URLをブラウザで開いて"ソースを見る"で見た場合のソース」あるいは「該当URLをブラウザで開いてsave as で保存したソース」 と 質問のソースでprint(soup2)した結果 とを 見比べて違っていると認識した、ということですね。それが書かれていないわけです。
chgrios

2020/01/28 05:04

はい、では「該当URLをブラウザで開いてsave as で保存したソース」を抽出する方法を教えて下さい
quickquip

2020/01/28 05:06

情報は質問に追記しましょう。ここは「質問への追記・修正の依頼」欄ですので。
chgrios

2020/01/28 05:09

いえ、あなたにお伺い立ててるのでここであっています。
tiitoi

2020/01/28 05:28

HTML を取得した段階で存在しない情報は Javascript であとから入れてるんじゃないでしょうか? その場合、selenium とか使って Javascript をレンダリングしないと取得できないと思います。
chgrios

2020/01/28 06:32

回答ありがとうございます!いま現在、seleniumで取得しようとしているのですが、chromedriverエラーで止まってしまっています、、
chgrios

2020/01/28 06:36

quiquiさん、回答に値する知識がないくせに無駄に質問追記させるのは こちらも時間が無駄ですので今後荒らしコメントのようなことはひかえてください。
quickquip

2020/01/28 07:17

「ブラウザで見た時のソース」と「urllib.requestで取ってきたソース」が違うという質問である可能性 か 「urllib.requestで取ってきたhtmlソース」と「BeautifulSoupでパーズしたあとにprintなどをして確認した結果」が違うという質問(質問のソースで言うと html2 と str(soup2) が違っているという質問)である可能性 か どちらかだろうと当たりは付くものの、そこを判断する材料がないなと思ったので追記を依頼しました。 結果、前者だとわかりましたが、この時点で"自分ではよい回答ができない質問"だと判明したのです。 これに関しては、私には「ググれ」以上のよい回答はできませんので、追記を依頼する以上のことはしません。質問に追記されて、前者の質問だと明になれば私以外の人が良い回答を出してくれるでしょう。 あなたは、html2 と print(soup2) が違っていることに **そもそも気がついていない** んじゃないですか?
quickquip

2020/01/28 07:45 編集

あ、私の手元では html2 と str(soup2) が食い違っているけれども、あなたの手元では食い違っていない可能性も、当然あるわけですよ。 だから何と何を見ているのか? という情報が欠けた質問には回答できなかったのです。 「BeautifulSoupの仕様で属性の順番は不定なんですよ」みたいな回答をしてたら完全にトンチンカンだったわけで、聞いておいてよかったー、と思ったのでした。 この回答も正確かどうかは自信がないのでちょっと調べないと回答はできないわけで、調べ始める前に聞いておきたかったというのもあります。 (追記)不定なわけがなかった。https://www.crummy.com/software/BeautifulSoup/bs4/doc/#output-formatters に "Beautiful Soup sorts the attributes in every tag by default:"と書いてありました。この挙動のことを質問しているのかと思ったのでした。
chgrios

2020/01/28 10:14

長文での返信ありがとうございました。要約すると私は解決に必要な知識がないので、「ググれ」とのことですよね。でしたら荒らしコメントとなんらかわりはないので(だって要求ばかりして解決に微塵も貢献していないのだから)、おとなしく静観してくださいね。お疲れ様です。
quickquip

2020/01/29 23:59 編集

seleniumの話題がでているので自分で解決しているのだろうと思っていて、自分で解決したのであれば https://teratail.com/help#resolve-myself にしたがって自分で回答を書いてベストアンサーにするだろうと思ってました。 そうしないところから考えると、本当には理解してなくて"よくわからないままseleniumを使おうとしている"可能性があることに気づきました。既出の質問がありましたので回答に挙げておきました。
guest

回答2

0

もしまだ自分で解決できておらず、seleniumが必要な理由がわからないままseleniumを使おうとしているのでしたら、以下の質問を参考にしてください。

https://teratail.com/questions/223641
https://teratail.com/questions/105717
https://teratail.com/questions/124760
https://teratail.com/questions/139310
https://teratail.com/questions/163429
https://teratail.com/questions/162878
https://teratail.com/questions/172895
https://teratail.com/questions/187362

私が"seleniumでググれ"以上の回答を持たないのと同様、だいたいが"seleniumを使いましょう"という回答なことが確認できると思います。
selenium以外の回答も若干はあるようですが、情報が比較的多いseleniumでよいと私は思います。

投稿2020/01/29 23:44

編集2020/01/30 00:01
quickquip

総合スコア11038

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

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

0

自己解決

seleniumを使って取得することで解決しました。tiitoiさんありがとうございました。

投稿2020/01/30 09:37

chgrios

総合スコア70

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問