BeautifulSoup4 페이지에서 참조할 내부 #js, css 선택 (+ 추가)
10976 단어 Python3locustbeautifulsoup4
의 목적
이 사이트는 응답 내용에 포함됩니다.
http://example.com
태그로 구성된 이미지 URLimg
태그에서 호출된 스크립트의 URLscript
레이블로 된 스타일시트의 URL코드
import requests
from bs4 import BeautifulSoup
def _fetch_targets(url: str) -> list:
"""指定したURLにアクセスした際に、直後に取る画像,JS,CSSファイルのURLリストを作る
"""
session = requests.Session()
resp = session.get(f"{url}/")
soup = BeautifulSoup(resp.content, 'html.parser')
# Image
img_tags = soup.find_all('img')
img_tags_origin = [
s.attrs['src'] for s in img_tags
if s.attrs['src'].startswith(url)
]
# JS
script_tags = [
s for s in soup.find_all('script')
if 'src' in s.attrs
]
script_tags_origin = [
s.attrs['src'] for s in script_tags
if s.attrs['src'].startswith(url)
]
# CSS
css_tags = [
s for s in soup.find_all('link')
if 'stylesheet' in s.attrs['rel']
]
css_tags_origin = [
s.attrs['href'] for s in css_tags
if s.attrs['href'].startswith(url)
]
# 一括加工
targets = img_tags_origin + script_tags_origin + css_tags_origin
return [t.replace(url, '') for t in targets]
# 使い方
if __name__ == '__main__':
_fetch_targets('http://example.com')
개요
기본적으로
link
의기능을 이용하여'검색탭→특정속성에 따른 필터→모두 모아성형'등간단한구성으로★
BeautifulSoup4
해시태그는 "아무래도 src는 존재하죠"*
img
태그는 태그에 직접 쓸 수도 있으므로 "script
속성"을 사용하여 필터링*
src
다양한 태그가 혼합되어 있기 때문에 "link
속성은 rel
"으로 필터링링크 태그 속성 정보
CSS
stylesheet
만 탭에서 추출할 때link
속성을 사용하지만 목록이라는 것을 처음 알았습니다.진정한 목적
rel
를 사용한 서버에 대한 부하 테스트를 위해 목적지뿐만 아니라 이 페이지에 참조된 자원을 포함하여 처리하면 부하 테스트가 될 수 있다고 생각해서 실시했습니다.나머지 코드
locustfile.py
from locust import HttpLocust, Task, TaskSet
# --------
# この辺に、さっきの_fetch_targetsが入る
# --------
def generate_get_task(task: Task, url: str) -> callable:
"""タスクジェネレータです
"""
def _get_task(task: Task):
task.client.get(url)
return _get_task
class TopPageWithResources(TaskSet):
"""テスト振る舞いの定義セット
"""
def __init__(self, parent):
"""アクセス対象のテストをまるごとセットする
"""
super().__init__(parent)
self.tasks = []
self.tasks.append(generate_get_task(self, '/'))
for t in _fetch_targets(self.locust.host):
self.tasks.append(generate_get_task(self, t, counter))
class WebsiteUser(HttpLocust):
"""テスト実行の実設定
"""
task_set = TopPageWithResources
min_wait = 500
max_wait = 900
왜냐하면 움직임이 늘어날 때 정확한 위치를 모르기 때문에 조사가 힘들어요.또한 테스트 개체 +
Locust.io
에서 발견된 모든 URL을 깊이_fetch_targets
하여 임무를 정의하는 함수를 준비했습니다.이렇게 된 느낌.
홈페이지 구성이 바뀌어도 그대로 대본으로 쓸 수 있어 개인적으로 편리하다고 생각한다.
Reference
이 문제에 관하여(BeautifulSoup4 페이지에서 참조할 내부 #js, css 선택 (+ 추가)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/attakei/items/ebd0739e89b706beb544텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)