TIL,WIL(일간,주간 회고)

2022. 12. 05 TIL 파이썬 이미지소스 크롤링 문제

worldint 2022. 12. 6. 01:33

-문제점:
이미지 크롤링해와야되는데 tech_image['src']이렇게 하면 a테그안에 src라는게 없다고 나온다

tech = soup.select('#main_content > div > div._persist > div:nth-child(1) > div')

for report in tech:

    r = report.select_one('div.cluster_body > ul > li')
    if report is not None:
        tech_image = r.select_one('div.cluster_thumb > div > a')['src']

-알게된점:

마지막줄 tech_image변수에 들어가는 select_one을 통해 가져온 객체는 bs4.element.Tag타입으로

저기에 ['블라블라']를 하려면 테그안의 속성에 블라블라가 들어있어야한다.

하지만 'src'는 a테그의 속성이 아니고 a테그 하위테그인 image테그안쪽에 들어있는 속성(attr)이기 때문에

하위테그를 추출할수있는 .하위테그, 여기서는 .img를 붙인수 ['src']를 붙여야한다.

코드는 아래처럼 바뀌어야한다

tech = soup.select('#main_content > div > div._persist > div:nth-child(1) > div')

for report in tech:

    r = report.select_one('div.cluster_body > ul > li')
    if report is not None:
           tech_image = r.select_one('div.cluster_thumb > div > a').img['src']

마지막줄을 보면 .img['src'] 이것이 붙어있는것을 확인할수 있다

 

다시말해

테그안에 테그가 하나더있고 그걸 추출하고 싶으면 만약 그게 a테그라면 
image.a['src'] 이런식으로 해줘야된다