강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

서나 Suna님의 프로필 이미지
서나 Suna

작성한 질문수

API 와 xml 부분에서

작성

·

63

0

import requests

from bs4 import BeautifulSoup

url = 'https://www.fun-coding.org/posts/dust-forecast'

request_params = {

'serviceKey' : 'Bx2fQ8Kp7Ld1Rz5Mj9Nh3Gt6Ws4Uc0Vk1Ea8Hb7Jc3Xt9Fy6Dg0Sj2Zw7Ar4Li5Kq1Pv',

'returnType' : 'xml',

'numOfRows' : '100',

'pageNo' : '1',

'searchDate' : '2024-03-22',

'InformCode' : 'PM10'

}

res=requests.get(url,params=request_params)

soup=BeautifulSoup(res.content,"lxml")

data1=soup.find_all("item")

for A in data1:

data2=A.find("informcause")

print(data2.get_text())

 

 



 

이부분에서 저기 request_params 값에 """또는 ''' 이것을 넣으면 값이 안나오는데

왜그런걸까요? 분명 저렇게 문장이 길거나 엔터 많고 하는 값은 """안에 넣을수 있다고 했는데

이경우는 적용이 안되고 그냥 아무것도 뜨지 않습니다. 밑에 처럼 해봤습니다.

 

 

request_params ="""

{

'serviceKey' : 'Bx2fQ8Kp7Ld1Rz5Mj9Nh3Gt6Ws4Uc0Vk1Ea8Hb7Jc3Xt9Fy6Dg0Sj2Zw7Ar4Li5Kq1Pv',

'returnType' : 'xml',

'numOfRows' : '100',

'pageNo' : '1',

'searchDate' : '2024-03-22',

'InformCode' : 'PM10'

}

"""

 

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

서나Suna님, 질문 주셔서 감사합니다. 파이썬에서 """ 또는 ''' 을 사용해 문자열을 선언할 때, 여러 줄의 문자열을 처리할 수 있게 됩니다. 하지만, requests.get 메소드의 params 인자에는 딕셔너리 형태의 데이터를 전달해야 하는데, """ 또는 '''을 사용하면 문자열로 인식하기 때문에 딕셔너리로 예상되는 구조를 문자열로 처리하게 되어 올바르게 파라미터를 전달할 수 없습니다.

즉, request_params에 딕셔너리 대신 문자열을 넣게 되면 requests 라이브러리는 이를 올바른 파라미터로 인식할 수 없으므로 서버에 적절히 요청하지 못하고, 결과적으로 원하는 데이터를 얻을 수 없게 됩니다.

따라서, request_params에는 다음과 같이 딕셔너리 형태로 값을 전달해야 합니다.

request_params = {
    'serviceKey' : 'Bx2fQ8Kp7Ld1Rz5Mj9Nh3Gt6Ws4Uc0Vk1Ea8Hb7Jc3Xt9Fy6Dg0Sj2Zw7Ar4Li5Kq1Pv',
    'returnType' : 'xml',
    'numOfRows' : '100',
    'pageNo' : '1',
    'searchDate' : '2024-03-22',
    'InformCode' : 'PM10'
}

이렇게 하면 requests 라이브러리가 올바르게 파라미터를 서버로 전달할 수 있고, 응답을 받을 수 있습니다.

서나 Suna님의 프로필 이미지
서나 Suna

작성한 질문수

질문하기