본문으로 바로가기

http://www.cine21.com/rank/person의 정보를 크롤링해서 정보를 가공한 후 pymongo에 저장해보자.

jupyter notebook에서 진행했다.

 

홈페이지를 살펴보면, POST로 req를 날리기 때문에 url이 바뀌지 않는 것을 볼 수 있다. 관리자 도구의 Network 부분에서 정보를 POST하는 부분을 살펴보면 알 수 있다.

 

 

그렇다면 해당 post를 날리기 위한 추가적인 정보 (예를 들면 form data)가 있을 터이다. 역시나 해당 부분을 살펴보면 Form Data를 살펴볼 수 있다.

 

 

그렇다면 requests를 할 때 post 방식으로 정보와 함께 날려주면 된다. 아래는 그 예시이다.

 

# mongoDB connect
connection = pymongo.MongoClient('mongodb://3.34.9.105', 27017)

# virable

url = "http://www.cine21.com/rank/person/content"
data={"section": "actor", "period_start": "2020-05", "gender": "all", "page": 2}

# request(POST)
res = requests.post(url, data)

# soup
soup = BeautifulSoup(res.content, "html.parser")

# crawling
actor_list = soup.find_all("li", {'class':['people_li']})

actor_url =[]
for el in actor_list:
    url = "http://www.cine21.com/" + el.find("div", {'class': ["name"]}).find("a")['href']
    name_before = el.find("div", {'class': ["name"]}).find("a").text
    name = re.sub("\(\w*\)", "", name_before)

    actor_url.append([name, url])
# db 생성
db = connection.actor_db

# 컬렉션 생성
actor = db.actor


for i in actor_url:
    actor.insert_one({"name": i[0], "url": i[1]})

darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체