김현빈의 개발새발
[BeautifulSoup] BeautifulSoup을 이용하여 웹 페이지에서 검색되는해당 이미지 데이터베이스에 저장하기 (2) 본문
Back-end/Python
[BeautifulSoup] BeautifulSoup을 이용하여 웹 페이지에서 검색되는해당 이미지 데이터베이스에 저장하기 (2)
김현빈빈 2024. 1. 17. 20:07이제 url을 따오는것을 데이터베이스의 이름값을 불러와 검색어에 검색하여 따오게 하고 이를 데이터베이스에 저장하는 과정을 설명하도록 하겠다.
이 경우엔 웹페이지의 검색을 데이터베이스의 이름값들을 검색하게 하고 이를 통해 나오는 이미지의 url값을 데이터베이스의 image 컬럼에 삽입해주는 과정을 이름의 처음부터 끝까지 순회하게 해야한다.
# MySQL 연결 설정
db_config = {
'host': 'localhost',
'user': '유저명',
'password': '비밀번호',
'database': '데이터베이스명'
}
# MySQL 연결
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
먼저 파이썬 환경에서 MySQL과 연결을 시켜야 하기 때문에 해당 코드를 추가하여 MySQL 과 연결을 시켰다.
이후 해당하는 데이터베이스가 가지고 있는 food 테이블의 모든 name값을 가져오기 위해
# food 테이블에서 모든 음식의 name 가져오기
query = "SELECT name FROM food"
cursor.execute(query)
foods = cursor.fetchall()
해당 코드를 추가해준다.
# 각 음식에 대한 이미지 URL 추출
for food in foods:
name = food[0]
url = f'https://search.daum.net/search?w=img&nil_search=btn&DA=NTB&enc=utf8&q={name}'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}
response = requests.get(url, headers=headers)
html_text = response.text
soup = bs(html_text, 'html.parser')
image_url_match = re.search(r'url:\s*"(https://[^"]+)"', str(soup))
if image_url_match:
image_url = image_url_match.group(1)
print(f"{name}: {image_url}")
# 이미지 URL을 해당하는 name에 맞춰 업데이트
update_query = "UPDATE food SET image = %s WHERE name = %s"
update_data = (image_url, name)
cursor.execute(update_query, update_data)
conn.commit()
print(f"{name}: 이미지 URL을 업데이트하였습니다.")
else:
print(f"{name}: 이미지 URL을 찾을 수 없습니다.")
# 연결 종료
cursor.close()
conn.close()
이후 가져오는 name 값들을 모두 가져와 이미지 url을 추출하는 부분의 name값에 삽입해주고 해당하는 name에 추출되는 이미지들의 첫번째 url 을 SQL의 쿼리문을 이용하여 image 컬럼에 삽입해준다. 이를 name의 처음부터 끝까지 순회하게 해주었다.
물론 검색엔진을 통하여 이미지를 검색하는것 이므로 이미지 검색 결과가 나오지 않을 경우를 생각하여 이미지 url이 검색되지 않으면 이미지 url을 찾을 수 없다는 메시지를 출력하게 해보았다.
해당 코드를 완성하여 실행하면
이렇게 진행이 되는것을 확인할 수 있고,
데이터베이스에도 image 컬럼에 정상적으로 삽입되는것을 확인할 수 있다.
'Back-end > Python' 카테고리의 다른 글
[BeautifulSoup] BeautifulSoup을 이용하여 웹 페이지에서 검색되는해당 이미지 데이터베이스에 저장하기 (1) (0) | 2024.01.17 |
---|