작성
·
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
라이브러리가 올바르게 파라미터를 서버로 전달할 수 있고, 응답을 받을 수 있습니다.