BeautifulSoup 관련 간단한 코드 질문 ..
조회수 1095회
import requests, bs4
res = requests.get('http://tuportaldesbloqueo.com/')
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, "html.parser")
elmes = soup.select('title')
for elem in elmes:
print(elmes)
(j16134uk) EUNHYUKui-MacBook-Pro:tuportaldesbloqueo.com eunhyulkim$ python output1.py
[<title>Davivienda</title>]
현재 프로그램 인데요
프린트 결과값에 [<title> </title>]
부분의 태그없이, 내용만 받아오고 싶어서,
elmess = elmes.replace("<title>","")
이런식으로 없애야 할 것 같아서 해보니
AttributeError: 'list' object has no attribute 'replace'
에러가 나오더라구요..
이런 경우에는 어떻게 처리를 해야 할까요..?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
2 답변
-
아래와 같이 elmess 가 list 라면 아래와 같이 항목을 , 로 구분짓거나 혹은 모든 요소를 하나의 문자열로 만들 수 있습니다.
tag 제거는 정규식으로 제거하면 됩니다.
In [1]: v = ["<title>Davivienda</title>"] In [2]: ''.join(v) Out[2]: '<title>Davivienda</title>' In [3]: import re In [4]: re.sub('<.+?>', '', ''.join(v)).strip() Out[4]: 'Davivienda'
그런데 bs4 의 select 결과는 bs4.element.Tag list이므로 text 속성을 이용하는 편이 낫습니다.
In [9]: import requests, bs4 ...: res = requests.get('http://tuportaldesbloqueo.com/') ...: res.raise_for_status() ...: soup = bs4.BeautifulSoup(res.text, "html.parser") ...: elmes = soup.select('title') In [10]: elmes Out[10]: [<title>Davivienda</title>] In [11]: elmes[0].text Out[11]: 'Davivienda' In [12]: type(elmes[0]) Out[12]: bs4.element.Tag
-
import requests, bs4 res = requests.get('http://tuportaldesbloqueo.com/') res.raise_for_status() soup = bs4.BeautifulSoup(res.text, "html.parser") title = soup.select_one('title').text print(title)
페이지의 제목 즉 Title만 추출하시는 거라면
한가지의 Element를 추출하는 것을 알고 있기 때문에
select_one으로 단일 대상을 select하여 추출하시면 굳이 List객체로 데이터를 얻지 않아도 됩니다.
댓글 입력