
웹 스크래핑 결과를 html에 보여주려 하는데, href를 가져와서 dict에 집어넣으려는데 string indices must be integers 에러가 납니다.
작성한 코드 및 에러 메세지
에러 메시지

서버쪽 코드
@app.route('/realnews', methods=["POST"])
def get_news():
headers = {
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
}
keyword_receive = request.form['keyword_give'].strip()
data = requests.get(
f'https://search.naver.com/search.naver?where=news&ie=utf8&sm=nws_hty&query={keyword_receive}',
headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
lis = soup.select('#main_pack > section > div > div.group_news > ul > li')
doc = []
for li in lis:
a = li.select_one('a.news_tit').text
# alink = a['href'] <-- 이게 문제입니다.
media = li.select_one('a.info.press').text
media = media.replace('언론사 선정', '')
print(a, media)
doc.append({'title': a,
# 'url': alink,
'media': media
})
print(doc)
return jsonify({'result': doc})
if __name__ == '__main__':
app.run('0.0.0.0', port=5000, debug=True)
클라쪽 코드
function realnews() {
$('#newslist').empty()
let keyword = $('#keyword').val()
$.ajax({
type: 'POST',
url: '/realnews',
data: { keyword_give: keyword },
success: function (response) {
console.log("성공", response['result']);
let rows = response['result']
for (let i = 0; i < rows.length; i++) {
let title = rows[i]['title']
// let url = rows[i]['alink'] <-- 에러가 나기 때문에...
let media = rows[i]['media']
if (i % 2 == 0) {
var str_bgcolor = 'color-hunt-set1-1'
} else {
var str_bgcolor = ''
}
let temp_html = `<li class="${str_bgcolor}">
${i + 1} ${title} <-- 에러가 해결되면 링크 등 추가 예정...
</li>`
$('#newslist').append(temp_html)
}
}
});
}
보고 계신 화면 전체를 캡처해 주시면, 튜터님들이 빠르게 상황을 상황을 이해할 수 있어요.

참고로 4번부터 나온건... 위에 네비바에 가려서 그렇습니다. 그건 조정하면 되는데...
