テストで初投稿。個人用のメモです。
今後もすこしづつ増やしていきます。よろしくお願いします。
画像サイトやツイッターなどのように、ページ全体がリクエストできない(設計によっては、タイムアウトしてしまったり、永遠スクロールする)場合は、非同期処理。
非同期処理によって、ページを処理することで、強制的に必要な静的コンテンツを獲得することができる。
同期処理
from requests_html import HTMLSession
from bs4 import BeautifulSoup
GAZOU_KEYWORD="Python 便利"
GAZOU_KEYWORD2=GAZOU_KEYWORD.replace(" ","%20").replace(" ","%20")
session = HTMLSession()
resp = session.get("http://img.jpg4.info/"+GAZOU_KEYWORD2+"/pic1.html")
resp = resp.html.url
resp
非同期処理
import time
from bs4 import BeautifulSoup
from requests_html import AsyncHTMLSession
JUPYTER LABで非同期使用する際に必要
import nest_asyncio
nest_asyncio.apply()
GAZOU_KEYWORD="Python 便利"
GAZOU_KEYWORD2=GAZOU_KEYWORD.replace(" ","%20").replace(" ","%20")
async def get_pyconjp_2017():
r = await asession.get("http://img.jpg4.info/"+GAZOU_KEYWORD2+"/pic1.html")
time.sleep (3)
return r
asession = AsyncHTMLSession()
results = asession.run(get_pyconjp_2017)
result = results[0]
soup = BeautifulSoup(result.content, "html.parser")
MAIN_KIJI = soup.find("div",attrs={"id":"picmain"})#記事部分
MAIN_KIJI