2022.04.29
크롤링을 하다 보면 내가 원하는 텍스트 뒤로 하위 태그들이 달려 있어
필요하지 않는 태그들도 같이 크롤링 되는 것을 볼 수 있다.
예를 들면
# import 생략
soup = BeautifulSoup(data.text, 'html.parser')
rows = soup.select("#body-content > div.newest-list > div > table > tbody > tr")
for row in rows:
rank = row.select_one("td.number")
print(rank)
내가 원하는건 number 클래스 td 뒤 text만 필요하지만 뒤에 span태그 들이 같이 딸려온다
이때 span 태그는 안나오게 하는법이 있다
soup = BeautifulSoup(data.text, 'html.parser')
rows = soup.select("#body-content > div.newest-list > div > table > tbody > tr")
for row in rows:
rank = row.select_one("td.number")
rank.find('span').decompose()
rank2 = rank.text.strip()
print(rank2)
.find('span').decompose() 하면 뒤에 스팬태그는 빼라는 게 된다.
.strip()은 프린트시 '/n' 같은 줄 바꿈 을 없애주기 위해서 사용 했다
-----
그리고 이거보다 더 쉽게 하는법!
.text[0:2]
문자열 슬라이싱 기법
[0:7:2]
문자열 순서 0부터 시작해서 7번 문자열에서 -1 한 곳까지만 하는데 간격은 2씩 이라는 말(이때 간격은 생략 가능)
"hello world"
012345678910 순서가 있으면
h부터 o까지인데-1 해주면 w까지 출력, 2간격이니까
'hlow'가 출력됨
soup = BeautifulSoup(data.text, 'html.parser')
rows = soup.select("#body-content > div.newest-list > div > table > tbody > tr")
for row in rows:
rank = row.select_one("td.number").text[0:2].strip()
print(rank)
위에는 span 태그를 뺴고 출력이라면
슬라이싱은 span도 뒤에 있지만 text부분의 0 번쨰 처음부터 2번째 까지만 출력하니까 뒤에가 안나오는거임
// 참고
파이썬 BeautifulSoup 사용해서 하위태그 지우기
html = requests.get(url) object = BeautifulSoup(html.text, "html.parser") name_object = object.find('h2', {'id': 'sit_title'}) # 아이템이름입니다.나는 보조입니다. print(name_object.text) # 아이템이..
cokes.tistory.com
https://codacoding.tistory.com/31
파이썬(Python) 기초 Step 2. 문자열(String)
○ 문자열이란? 문자열은 영어로 String이라고 하며, 문자인 character의 나열을 의미합니다. 문자열은 따옴표로 감싸서 표시합니다(예시 1) 참조). 또한, 플러스( + ) 연산자를 사용하여 문자열과 문
codacoding.tistory.com
'coding > Python' 카테고리의 다른 글
셀레니움 (0) | 2022.07.20 |
---|---|
python flask 시작 (0) | 2022.04.29 |
python pymongo 사용법 (0) | 2022.04.29 |
python bs4 (0) | 2022.04.28 |
python requests 사용법 (0) | 2022.04.28 |