파이썬,크롤링

정예빈·2022년 4월 3일

이게 코딩의 매력인가?
이해되면 재밌어 미치겠다

  • python문법은 js보다 훨씬 더 직관적이다

js의 경우

	let a = 2
	let b = 3

와 같이 let으로 a와 b의 값을 정해줬다면

python은

	a = 2
    b = 3

과 같이 let이 필요가 없다.
또한 중괄호 역시 필요가 없다!
(줄은 맞춰야한다)

for fruit in fruits:
print(fruit)

js와는 다르게 리스트와 함께쓰도록 기획 되었다(?)

1. count = 0
2. for aaa in fruits:
3.	if aaa == '사과':
4.	count + = 1
5. print(count)
  1. count는 0부터 시작해
  2. fruits(리스트)안에 있는 aaa에 관해 말할거야 (for 문법)
  3. 만약 aaa가 사과라면
  4. count를 하나씩 늘려줘
  5. 카운트를 보여줘

= 리스트의 목록에서 사과의 갯수를 찾아준다.

크롤링

BeautifulSoup 이라는 패키지를 사용해 보았다.

네이버 영화 랭킹 페이지를 이용해 영화 순위, 제목, 평점을 정리했다.

movies = soup.select('#old_content > table > tbody > tr')
for movie in movies:
    a = movie.select_one('td.title > div > a')

    if a is not None:
        title = a.text
        rank = movie.select_one(' td:nth-child(1) > img')
        star = movie.select_one('td.point')
        print(title,rank,star)

처음 내가 혼자 한 크롤링
했더니 결과 값이 이렇게 나왔다.

원하지 않는 링크 주소, 깔끔하게 나오지 않는 평점.

movies = soup.select('#old_content > table > tbody > tr')
for movie in movies:
    a = movie.select_one('td.title > div > a')
    b = movie.select_one('td.point')

    if a is not None:
        title = a.text
        rank = movie.select_one('td:nth-child(1) > img')['alt']
        star = b.text
        print(rank,title,star)

이건 숙제 해설을 조금씩 보면서 혼자고쳐본것

b라는 값을 따로 지정해서 .text를 붙였더니 깔끔하게 나와서 너무 뿌듯했다.
하지만 스앵님은 더 쉬운방법을 알고 계셨지....

movies = soup.select('#old_content > table > tbody > tr')
for movie in movies:
    a = movie.select_one('td.title > div > a')


    if a is not None:
        title = a.text
        rank = movie.select_one('td:nth-child(1) > img')['alt']
        star = movie.select_one('td.point').text
        print(rank,title,star)

바로b값을 따로 주지 않고 그냥 뒤에다가 .text 붙이는거..^^
이렇게 해도 됐구나..
머리 아파 죽을것 같다가도 이렇게 이해가 되면 갑자기 미친듯이 재밌어진다.
이제 익숙해 질 일만 남은거지..?

이게 수정 후 의 결과값!
훨씬 훨씬 깔끔해졌다.

profile
기회는 준비된 자에게 오는법

0개의 댓글