내가 할 일은 LLM, RAG, Langchain 구축
import requests, json
from bs4 import BeautifulSoup
import requests
def food_info():
url = f'https://www.10000recipe.com/recipe/list.html'
response = requests.get(url)
food_data = []
page_num = 1
while True:
url = f'{url}?order=reco&page={page_num}'
response = requests.get(url)
if response.status_code == 200:
try:
html_text = response.text
soup = BeautifulSoup(html_text, 'html.parser')
except Exception as e:
print("잘못된 요청입니다. 에러:", {e} )
break
food_info = soup.find_all(attrs= {'class' : 'common_sp_link'})
if not food_info:
break
for food in food_info:
food_id = food['href'].split('/')[-1]
food_recipe = f'https://www.10000recipe.com/recipe/{food_id}'
먼저 데이터 수집을 위한 코드
여기서 food['href']는
food는 BeautifulSoup 객체로, food_list는 find_all을 통해 class="common_sp_link"을 가진 <a> 태그들의 리스트입니다.
food['href']
각 food는 BeautifulSoup 객체로, HTML 요소(<a>, <img>, <div>, 등등`)를 나타냅니다.
food['href']는 그 요소가 가진 href 속성의 값을 나타냅니다. href 속성은 일반적으로 링크의 URL을 지정하는데 사용됩니다.
예를 들어:
<a href="/recipe/12345" class="common_sp_link">Recipe 1</a>
이 경우, food['href']는 /recipe/12345라는 문자열을 반환합니다. 즉, 레시피의 고유 URL 경로입니다.
1. soup.find_all() 함수
find_all()은 BeautifulSoup 객체에서 특정 조건에 맞는 모든 HTML 요소를 찾는 함수입니다. 이 함수는 조건에 맞는 모든 요소들을 리스트 형태로 반환합니다.
soup: BeautifulSoup 객체입니다. 이 객체는 웹 페이지의 HTML을 파싱한 후, 페이지 내의 각 요소를 추출할 수 있게 해줍니다.
find_all(): 주어진 조건을 만족하는 모든 요소를 찾아 리스트로 반환합니다.
attrs={'class': 'common_sp_link'}: find_all의 검색 조건입니다. 여기서는 class="common_sp_link"인 모든 HTML 태그를 찾으라는 의미입니다.
2. attrs={'class': 'common_sp_link'}의 의미
attrs: attrs는 HTML 태그의 속성을 기준으로 요소를 찾는 조건을 설정합니다.
class: 'common_sp_link': HTML 태그의 class 속성이 'common_sp_link'인 요소들을 찾겠다는 조건입니다.
3. soup.find_all(attrs={'class': 'common_sp_link'})
이 구문은 **class="common_sp_link"**인 모든 HTML 요소들을 찾습니다. 그 결과로 반환되는 것은 class="common_sp_link"가 포함된 모든 태그들이며, 주로 <a> 태그일 가능성이 높습니다. 일반적으로 이 클래스는 레시피의 링크를 나타내는 <a> 태그에 사용됩니다.
예를 들어:
<a href="/recipe/12345" class="common_sp_link">Recipe 1</a> <a href="/recipe/67890" class="common_sp_link">Recipe 2</a> <a href="/recipe/11223" class="common_sp_link">Recipe 3</a>
이 HTML 코드에서 soup.find_all(attrs={'class': 'common_sp_link'})를 실행하면 다음과 같은 결과가 반환됩니다:[ <a href="/recipe/12345" class="common_sp_link">Recipe 1</a>, <a href="/recipe/67890" class="common_sp_link">Recipe 2</a>, <a href="/recipe/11223" class="common_sp_link">Recipe 3</a> ]
즉, food_info = soup.find_all(attrs={'class': 'common_sp_link'})는 웹 페이지에서 class="common_sp_link"를 가진 모든 <a> 태그를 찾아 리스트로 반환합니다.
반환된 food_info 리스트의 각 요소는 레시피의 URL과 이름을 포함하는 링크를 나타내며, 이를 통해 레시피의 세부 정보로 이동할 수 있는 URL을 추출할 수 있습니다.
끝...