파이썬 스크립트

파이썬 으로 제주맛집 스크래핑

Billcorea 2021. 12. 22. 09:36
반응형

제주도를 가고 싶었는데, 아직인 데... 제주도에 가면 어떤 맛집이 있는 지 궁금하기도 하고 해서 

많은 블로거 들이 작성한 글을 찾아서 제주 맛집을 찾아 보려고 한다.

import requests
from bs4 import BeautifulSoup
import urllib
import sqlite3
from datetime import datetime
import re

conn = sqlite3.connect("opDeGangDB.sqlite", isolation_level=None)
rs = conn.cursor()
rs.execute('''CREATE TABLE IF NOT EXISTS chejuList1
        (id integer PRIMARY KEY, url text, Name text, writeDate text)''')

insSql = '''
    insert into chejuList1 (url, name, writeDate)
    values ('{0}', '{1}', '{2}')
'''

searchKey = '제주맛집'
for idx in range(1, 100):
    print(idx)
    url = "https://search.daum.net/search?w=blog&m=board&collName=blog_total&q={0}&spacing=0&DA=PGD&p={1}".format(urllib.parse.quote_plus(searchKey), idx)
    response = requests.get(url)
    bs = BeautifulSoup(response.text, 'html.parser')
    for item in bs.find_all(class_="f_link_b"):
        rs.execute(''' select count(*) from chejuList1 where url = "{0}" '''.format(item['href']))
        if rs.fetchone()[0] == 1:
            pass
        else:
            print(item['href'] + ' ' + item.text)
            rs.execute(insSql.format(item['href'], item.text.replace("'",""), datetime.today().strftime("%Y%m%d%H%M%S")))

regex = r'(\w+[원,산,남,울,북,천,주,기,시,도]\s*)?' \
        r'(\w+[구,시,군]\s*)?(\w+[구,시]\s*)?' \
        r'(\w+[면,읍]\s*)' \
        r'?(\w+\d*\w*[동,리,로,길]\s*)' \
        r'?(\w*\d+-?\d*)?'

rs.execute(''' select url, Name, writeDate from chejuList1 ''')
items = rs.fetchall()
for item in items:
    print(item[0] + ' ' + item[1])
    response = requests.get(item[0])
    bs = BeautifulSoup(response.text, 'html.parser')
    text1 = re.sub('(<([^>]+)>)', '', bs.get_text())
    tt = ''
    for line in text1.split('\n'):
        if line.strip() != '':
            print(re.search(regex, line.strip()))
    #break

일단 할 수 있는 것은 다음 검색에서 제주맛집 을 찾아보자... 그리고 이제 그것을 스크랩해서 제주도에 있는 맞집 리스트를 만들어 보는 것이다.  블로거 들이 작성한 것이기 떄문에 나름 검증은 되었다고 봐도 될 듯 하고, 그 리스트를 잘 정리하면 중복 되는 것도 있을 꺼고... 그렇게 해서 나만의 맛집 목록을 만들어 보는 것이다.

ㅋ~

많은 블로거님들 감사합니다.

반응형