본문 바로가기
Python/Web Scrapping

string, strip()을 이용한 문자 추출과 정리

by Sondho 2020. 4. 2.
  •  string

  - 태그(tag) 내 문자열을 반환

  - 태그 내에 하위 태그가 두개 이상일 경우 무엇을 반환해야 하는지 명확하지 않기 때문에 None을 반환

  - 태그 내에 하위 태그가 하나이고 그 안에 문자열이 존재할 경우  해당 문자열을 반환

  • strip([charset])

  - ()안에 입력한 문자의 양쪽에 있는 모든 조합을 제거.  

  - 공백일경우 공백을 제거

  • lstrip([chars])

  - 왼쪽에 있는 조합만을 제거

  • rstrip([chars])

 

  - 오른쪽의 조합만을 제거

아래에 보이는 HTML에서 Boxy Charm을 .string으로 추출하려고 할 때

#HTML
<div class="jobsearch-SerpJobCard unifiedRow row result clickcard"
	<a data-tn-element="companyName"class="turnstileLink" 
	target="_blank"href="https://www.indeed.com/cmp/Boxy-
	Charm?from=SERP&amp;campaignid=serp-
	linkcompanyname&amp;fromjk=983a9a109d1bc8ae&amp;jcid=79a7d51f7ec
	fda7b" onmousedown="this.href = 
	appendParamsOnce(this.href, 'from=SERP&amp;campaignid=serp-
	linkcompanyname&amp;fromjk=983a9a109d1bc8ae&amp;jcid=79a7d51f7ec
	fda7b')" rel="noopener">
	Boxy Charm</a>
</div>

 

1. find를 사용해서 상위의 class : jobsearch의 어트리뷰트를 가진 div태그를 추출한다. = html.

2. 마찬가지로 span, class를 추출한다.

html = soup.find("div", {"class":"jobsearch-SerpJobCard"})
company = html.find("span",  {"class":"company"})
if company is not None:
  # company의 하위 태그에도 문자열이 존재할 수 있으므로 a태그의 문자열도 확인
  company_anchor = company.find("a")
    # company_anchor 안에 문자열이 있을 경우 company_anchor의 문자열을 추출
    if company_anchor is not None:
      company = str(company_anchor.string)
    # company_anchor에 문자열이 없을 경우 company의 문자열을 추출
    else:
      company = str(company.string)
      #company의 양쪽 모든 공백을 제거
      company = company.strip()
else:
	company = None

'Python > Web Scrapping' 카테고리의 다른 글

<class 'bs4.element.ㅁㅁㅁ'>  (0) 2020.07.18
.find_all("tr")과 .find_all("tr")[:]  (0) 2020.07.18
1. requests와 beautifulsoup  (0) 2020.04.01

댓글