やりたいこと
from requests_html import HTMLSessionを使えるようにしたい
発生している問題
コードを実行したらエラーが出る
google colaboratryで試した場合のエラー
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-1-ea764bde7c35> in <module>()
> 3 from bs4 import BeautifulSoup
4 import re
----> 5 from requests_html import HTMLSession
6 import asyncio
7 # スクレイピング対象ModuleNotFoundError: No module named 'requests_html'
NOTE: If your import is failing due to a missing package, you can
manually install dependencies using either !pip or !apt.To view examples of installing some common dependencies, click the
"Open Examples" button below.
anacondaで試した場合のエラー
RuntimeError Traceback (most recent call last)
<ipython-input-1-53fcf8c1f46c> in <module>
40 session = HTMLSession()
41 r = session.get(URL)
---> 42 r.html.render()
43
44 # ブラウザエンジンでHTMLを生成させる
~/opt/anaconda3/lib/python3.8/site-packages/requests_html.py in render(self, retries, script, wait, scrolldown, sleep, reload, timeout, keep_page)
584 """
585
--> 586 self.browser = self.session.browser # Automatically create a event loop and browser
587 content = None
588
~/opt/anaconda3/lib/python3.8/site-packages/requests_html.py in browser(self)
727 self.loop = asyncio.get_event_loop()
728 if self.loop.is_running():
--> 729 raise RuntimeError("Cannot use HTMLSession within an existing event loop. Use AsyncHTMLSession instead.")
730 self._browser = self.loop.run_until_complete(super().browser)
731 return self._browser
RuntimeError: Cannot use HTMLSession within an existing event loop. Use AsyncHTMLSession instead.
環境
anaconda
または
google colaboratry
import requests import urllib from bs4 import BeautifulSoup import re from requests_html import HTMLSession import asyncio # スクレイピング対象 #URL = 'https://www.tvkingdom.jp/chart/23.action' URL='https://bangumi.org/epg/td?ggm_group_id=42' # WordPress接続情報 WP_URL = 'https://xxxx.com' WP_USERNAME = 'userName' WP_PASSWORD = 'xxxx xxxx xxxx xxxx xxxx xxxx' ARTICLE_ID = "9999" # WordPress更新関数 def post_article(id, content): # REST APIを使うための認証情報 user_ = WP_USERNAME pass_ = WP_PASSWORD # 更新情報 payload = {"content": content} #内容 # 記事の更新を行う res = requests.post(urllib.parse.urljoin(WP_URL, "wp-json/wp/v2/posts/817"), #"wp-json/wp/v2/posts/<id>"にPostすると更新になる json=payload, #投稿する記事の内容を設定する auth=(user_, pass_)) #ユーザとアプリケーションパスワードを設定する print('WP投稿結果:{}'.format(res)) return res nest_asyncio.apply() # セッション開始 session = HTMLSession() r = session.get(URL) # ブラウザエンジンでHTMLを生成させる r.text content = '香川真司と久保建英の最新ニュースです。' elems = r.html.find(".program_text") for i,elem in enumerate(elems): href = elem.find('a') # 5件だけ処理する if i==5: break link_ = href[0].attrs['href'] # 抽出したURLを整形して絶対パスを作る link = 'https://bangumi.org' + link_ title_elem = elem.text content = content + '<p><a href="' + link + '">' + title_elem + '</a></p>\n' # 記事を更新する post_article(ARTICLE_ID, content)
ここは個人の情報を入れています
WordPress接続情報
WP_URL = 'https://xxxx.com'
WP_USERNAME = 'userName'
WP_PASSWORD = 'xxxx xxxx xxxx xxxx xxxx xxxx'
わかりづらいとは思いますがよろしくお願い致します!!
回答2件
あなたの回答
tips
プレビュー