Python에서 페이지 마이그레이션을 반복하는 동안 롤업

Requests와 BeautifulSoup을 통해 페이지를 이동하고 Pythn으로 커튼을 감습니다


일본에서는 기계학습 등 통계 분석을 위해 복제 소프트웨어를 통해 데이터를 수집할 수 있다.
여기서 우리는 페이지를 옮기면서 커튼에 대해 설명을 할 것이다.
커튼의 규칙과 주의사항에 관하여 아래의 보도는 비교적 상세하니 여기를 참조하시오.

프로그램의 구성


구성으로 먼저 세부내용이 있는 링크된 대상의 URL을 기준으로 나열한 다음 순서대로 액세스하여 필터링합니다.
그리고 URL을 한 번 순환하면 페이지 이동 단추가 있기 때문에 다음 페이지가 있으면 페이지 이동을 진행합니다.없으면 프로그램 끝이야.
그림에서도 개요를 보여줬어요.

이루어지다


사용할 모듈

import requests
from bs4 import BeautifulSoup
import time
import os
import pandas as pd
import codecs
from urllib.parse import urljoin

얻다

res = requests.get(url)
res.raise_for_status()
html = BeautifulSoup(res.text, 'lxml')

>에서 정보 추출

detail_url_list = html.find_all("取得したいURLのhtmlタグ")
next_page = html.find("次のページのURLのhtmlタグ")

페이지 마이그레이션

if bool(next_page) == False:
    break
dynamic_url = urljoin(base_url, next_page.a.get("href"))

전체 프로세스

data_col = ["information1", "information2"]

while True:

    res = requests.get(dynamic_url)
    res.raise_for_status()

    html = BeautifulSoup(res.text, 'lxml')

    detail_url_list = html.find_all("取得したいURLのhtmlタグ")
    next_page = html.find("次のページのURLのhtmlタグ")

    for i in range(len(detail_url_list)):

        res2 = requests.get(urljoin(base_url, detail_url_list[i].a.get("href")))
        res2.raise_for_status()
        html2 = BeautifulSoup(res2.text, 'lxml')

        # 抜き出す情報に合わせて抽出するタグの変更
        information1 = html2.img.get("alt")
        information2 = html2.a.get("href")

        s = pd.Series([information1, information2],
                      index=data_col)
        df = df.append(s, ignore_index=True)
        df.to_csv(save_csv)
        time.sleep(5)

    if bool(next_page) == False:
        break
    dynamic_url = urljoin(base_url, next_page.a.get("href"))
    time.sleep(5)

WEB 사이트의 HTML은 각기 다른 구조를 가지고 있지만, 페이지를 옮기면서 스크래치하는 방법이 대체적으로 적용될 수 있을 것 같다.스컬링의 간격이 1초라면 양심이라고 하는데 일본에서는 1초 간격이라도 공격으로 몰려 잡히는 예가 있으니 조금 더 길게 두는 게 좋을 것 같다.

좋은 웹페이지 즐겨찾기