※初めて利用する為拙い部分があるかもしれません。
Pythonを初めてまだ日が浅い者です。
あるショップサイトからhtmlを取得し、一定以下の数値の商品があれば通知する。というプログラムを組んでみたいのですがテスト段階で出力を見てみたのですがhtmlソースが一部の部分までしか取得できていない状況です。
以下ソースです。
python
import requests from requests.exceptions import Timeout from bs4 import BeautifulSoup # URL入力 load_url = input('URL :') # UserAgent情報 Firefox(20220121時点) dummy_user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0" header = { "User-Agent" : dummy_user_agent, "Accept-Language" : "ja,en-US;q=0.7,en;q=0.3" } # タイムアウト処理 try: html = requests.get(load_url, headers=header, timeout=(6.0, 7.5)) except Timeout: print("Time out") pass # HTTPステータスコード処理 if html.status_code == requests.codes.ok: # Windows環境だとtextが内部でエンコードがcp932になっているらしいのでUTF-8に soup = BeautifulSoup(html.text.encode('cp932', "ignore").decode('utf-8', "ignore"), 'html.parser') # HTML全体を表示する print(soup) else: html.raise_for_status() print(html.txt)
環境
Windows 10 21H1 64bit
Python 3.10
使用者は自分のみ
問題点
htmlの取得が途中までしか取得されない。(表示されない?)
niconicoやYoutube等ソースが長いものは途中で途切れてしまう。
途切れる位置は毎回異なる。(Youtubeやniconicoは10000文字程度 他サイトでも8000文字程度で途切れてしまう)
質問
なぜこのような現象が起こってしまうのでしょうか。
解決策はどのようにすればよいのでしょうか。
どうしたいか
オフライン以外のどのような状況でもhtmlソースをすべて取得できるようにしたい。
参考サイトやソース改善等御教授いただけると幸いです。
まだ回答がついていません
会員登録して回答してみよう