웹 개발/크롤링

[웹크롤링] 04. beautifulSoup 좀더 자세히

내만 2022. 9. 21. 23:35
728x90
반응형

 

 

 

 

 

🙆‍♂️ 코드 리뷰


from requests import get
from bs4 import BeautifulSoup

base_url="https://community.bu.ac.kr/info/1787/subview.do"
response = get(f"{base_url}")
if response.status_code != 200:
    print("Can't")
else:
    soup=BeautifulSoup(response.text,"html.parser")
    print(soup.find_all('td',class_="_artclTdTitle"))

현재 이코드로 돌리면 

정제되지 않은 불필요한 정보도 얻을 수 있습니다.

출력값이 list 형태인 것을 생각해보고 다시 코드를 작성하면

 

from requests import get
from bs4 import BeautifulSoup

base_url="https://community.bu.ac.kr/info/1787/subview.do"
response = get(f"{base_url}")
if response.status_code != 200:
    print("Can't")
else:
    soup=BeautifulSoup(response.text,"html.parser")
    links = soup.find_all('td',class_="_artclTdTitle")
    for link in links:
        print(link.find_all('a'))

우리가 필요한 a태그만 뽑아먹을 수 있습니다.

 

이 a태그 안에 글 제목과 링크 등의 정보가 담겨있어서 아주 잘 사용할 것 같습니다.

자 그러면 이제 이 a태그에서 링크만 발라먹도록 하겠습니다.

 

from requests import get
from bs4 import BeautifulSoup

base_url="https://community.bu.ac.kr/info/1787/subview.do"
response = get(f"{base_url}")
if response.status_code != 200:
    print("Can't")
else:
    soup=BeautifulSoup(response.text,"html.parser")
    tds = soup.find_all('td',class_="_artclTdTitle")
    for td in tds:
        anchors = td.find_all('a')
        for anchor in anchors:
            print(anchor['href'])

변수명도 살짝 바꿔주고 코드를 추가했습니다.

td.find_all을 a태그로 한 값을 anchors에 저장합니다.

anchors는 이런 타입이라고 하네요.

 

그래서 여차저차 해가지구 for문 돌리면서 anchor['href']로 확인하면 href속성 값을 볼 수 있나봅니다!

그렇게 이런 주소들을 얻게 됐고 이 주소로만은 이동할 수 없으니 포맷해서 다시 표현하면

from requests import get
from bs4 import BeautifulSoup

base_url="https://community.bu.ac.kr/info/1787/subview.do"
response = get(f"{base_url}")
if response.status_code != 200:
    print("Can't")
else:
    soup=BeautifulSoup(response.text,"html.parser")
    tds = soup.find_all('td',class_="_artclTdTitle")
    for td in tds:
        anchors = td.find_all('a')
        for anchor in anchors:
            link = f"https://community.bu.ac.kr{anchor['href']}"
            print(link)

 

아주 잘되는 모습!!!

728x90
반응형