Colaboratoryを使ってください
Seleniumのインストール
!apt install chromium-chromedriver !cp /usr/lib/chromium-browser/chromedriver /usr/bin !pip install selenium
import time from bs4 import BeautifulSoup from selenium import webdriver from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.chrome.options import Options options = webdriver.ChromeOptions() options.add_argument("--headless") options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") driver = webdriver.Chrome("chromedriver", options=options) driver.implicitly_wait(10) driver.set_window_size(1280, 720) driver.get("http://example.jp") # メインのウインドウ parent_window = driver.current_window_handle n = 1 while True: # URL表示 print(driver.current_url) for i in driver.find_elements_by_link_text("XXXXX"): time.sleep(3) i.click() # ウインドウ切替 driver.switch_to.window(driver.window_handles[-1]) # ソース取得 html = driver.page_source.encode("utf-8") soup = BeautifulSoup(html, "html.parser") # スクレイピング処理 # script・styleを除去 for script in soup(["script", "style"]): script.decompose() # テキスト化 text = soup.get_text("\n", strip=True) # テキストファイルに保存 with open(f"result-{n:05}.txt", mode="w") as fw: fw.write(text) n += 1 # スクリーンショット # driver.save_screenshot("ss.png") # ウインドウを閉じる driver.close() # メインのウインドウに戻る driver.switch_to.window(parent_window) # 次のページ try: driver.find_element_by_css_selector("XXXXX").click() # 見つからない場合は終了 except NoSuchElementException: driver.quit() break
ファイル圧縮
!zip data result*.txt