21.02.04 11:24 작성
·
357
0
드디어 막바지가 보이네요! 명강의 감사드립니다 ㅎㅎ
다른분들이 질문하신 것처럼, 크롤링했을 때 함께 추출되는 태그를 없애고 싶었습니다.
'<b>갤럭시S21</b> 가격 19만원대 판매, S20 및 노트20 울트라 특가 프로모션'
원초적인 방법으로 해결하려고 우선 replace를 사용해서 해결은 했는데요, 만약 <b>태그 뿐만 아니라 더 복잡하게 많은 태그들이 있다면, 그걸 일일이 replace로 해결을 해야하나요? ㅠㅠ
get_text()와 string이 안되는 원인을 찾다가, 이 메서드들은 BeautifulSoup의 메서드인 사실을 발견하고 import했지만,
AttributeError: 'str' object has no attribute 'get_text'
이러한 에러가 여전히 발생했습니다.
새로운 기능이 추가되기 전까지 replace로 해결을 해야하는지 아니면 다른 방법이 있는지 궁금합니다 ! 구글링을 더이상 해봐도 진전이 없어서 질문드립니다 ㅠㅠ
아래는 제 코드입니다.
import requests
from bs4 import BeautifulSoup
import openpyxl
client_id = '비공개'
clinent_secret = '비공개'
start, num = 1, 0
excel_file = openpyxl.Workbook()
excel_sheet = excel_file.active
excel_sheet.column_dimensions['B'].width = 100
excel_sheet.column_dimensions['C'].width = 100
excel_sheet.append(['랭킹', '제목', '링크'])
for index in range(10):
start_number = start + (index * 100)
naver_open_api = 'https://openapi.naver.com/v1/search/news.json?query=갤럭시 S21&display=100&start=' + str(start_number)
header_params = {"X-Naver-Client-id": client_id, "X-Naver-Client-Secret": clinent_secret}
res = requests.get(naver_open_api, headers=header_params)
if res.status_code == 200:
data = res.json()
for item in data['items']:
num += 1
title = item['title'].replace('<b>', '').replace('</b>', '')
excel_sheet.append([num, title, item['link']])
else:
print("Error Code", res.status_code)
excel_file.save('Crawling.xlsx')
excel_file.close()
print('엑셀처리 완료')
답변 2
0
0
2021. 02. 04. 11:43
추가질문입니다.
append를 사용하게 되면,
[['랭킹', '제목', '링크'], ['1', '연습', 'http']]
이런식으로 생기게 되는데, 어떻게 엑셀파일에 순차적으로 딱.딱.딱. 행 변환이 되나요?? 따로 명령해준 것도 없는데...
구글링해보고 싶었는데 키워드를 어떻게 해야할지 모르겠어요 ㅠㅠ 혹시..이 부분에 대해서 조언이 있으시다면 꼭 좀 부탁드리겠습니다 !