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초 간격이라도 공격으로 몰려 잡히는 예가 있으니 조금 더 길게 두는 게 좋을 것 같다.
Reference
이 문제에 관하여(Python에서 페이지 마이그레이션을 반복하는 동안 롤업), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tomson784/items/88a3fd2398a41932762a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
구성으로 먼저 세부내용이 있는 링크된 대상의 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초 간격이라도 공격으로 몰려 잡히는 예가 있으니 조금 더 길게 두는 게 좋을 것 같다.
Reference
이 문제에 관하여(Python에서 페이지 마이그레이션을 반복하는 동안 롤업), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tomson784/items/88a3fd2398a41932762a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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)
Reference
이 문제에 관하여(Python에서 페이지 마이그레이션을 반복하는 동안 롤업), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tomson784/items/88a3fd2398a41932762a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)