[Python] requests.get(), .select(), with open() as file:

공부한 내용 정리하는 공간입니다.

틀린 내용이 있을 수 있습니다.

모든 지적, 첨언 환영합니다.

오늘의 코드

1. 아래 주소에서 항목의 주소를 가져오기

https://www.malware-traffic-analysis.net/2023/index.html

2. 제목과 링크 정보를 전체 URL 형식으로 출력하기

3. 출력된 결과를 txt 파일로 저장하기

import requests
from bs4 import BeautifulSoup

url = "https://www.malware-traffic-analysis.net/2023/index.html"
headers = {
        'User-Agent': 'Mozilla/5.0',
        'Content-Type': 'text/html; charset=utf-8'
}
req = requests.get(url, headers=headers)
soup = BeautifulSoup(req.text, "lxml")

tags = soup.select('#main_content > div.content > ul > li > a.main_menu')

print(tags)
results = []

for tag in tags:
    link_text = tag.text
    link_href = f"https://www.malware-traffic-analysis.net/2023/{tag['href']}"
    results.append(f"{link_text}\n{link_href}\n")
    print(link_text)
    print(link_href)

with open('write.txt', 'w', encoding='utf-8') as file:
    for result in results:
        file.write(result)

오늘의 코드 결과

오늘의 코드 설명

1. 아래 주소에서 항목의 주소를 가져오기

https://www.malware-traffic-analysis.net/2023/index.html

url = "https://www.malware-traffic-analysis.net/2023/index.html"
headers = {
        'User-Agent': 'Mozilla/5.0',
        'Content-Type': 'text/html; charset=utf-8'
}

웹 사이트에 요청을 보내기 위해 사용할 url, headers를 설정

위 코드로 https://www.malware-traffic-analysis.net/2023/index.html 페이지의 콘텐츠를 가져올 수 있음

req = requests.get(url, headers=headers)

지정한 url, headers 정보로 웹 서버에 get 요청을 보내서 응답 내용을 req에 저장

req에는 응답 본문, 헤더, 쿠키 등의 정보가 포함됨

soup = BeautifulSoup(req.text, "lxml")

HTML 소스 코드 req.text를 lxml로 파싱해서 soup에 저장

2. 제목과 링크 정보를 전체 URL 형식으로 출력하기

tags = soup.select('#main_content > div.content > ul > li > a.main_menu')

#main_content > div.content > ul > li > a.main_menu : 제목의 CSS selector(CSS 선택자)

CSS 선택자에 맞는 태그들을 리스트로 반환하여 tags에 저장

link_text = tag.text
link_href = f"https://www.malware-traffic-analysis.net/2023/{tag['href']}"

tag의 내용을 link_text에 저장

    >link_text=제목 텍스트

tag의 href 속성값을 link_href에 저장

    >link_href=제목의 링크

3. 출력된 결과를 txt 파일로 저장하기

with open('write.txt', 'w', encoding='utf-8') as file:

write.txt를 쓰기 모드로 열어서 파일 내용을 file에 저장

for result in results:

리스트 results에는 {link_text}\n{link_href}\n 으로 만들어진 내용이 들어있음

file.write(result)

result는 리스트 results에서 반복되기 때문에 file에 리스트 results의 요소를 하나씩 작성