Anonymous
Блок кода работает нормально без метода и неправильно, пока блок кода находится в методе
Сообщение
Anonymous » 21 янв 2025, 14:06
У меня есть фрагмент кода, который извлекает результаты поиска с веб-сайта. Я маскирую веб-сайт, но делюсь блоком кода здесь.
Код: Выделить всё
search_page_url = "https://mysite.results/search"
session = requests.Session()
response = session.get(search_page_url)
soup = BeautifulSoup(response.text, "html.parser")
view_state = encode_str(soup.find("input", {"id": "__VIEWSTATE"})["value"])
payload = f"__VIEWSTATE={view_state}"
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'accept-language': 'en-US,en;q=0.9',
'cache-control': 'max-age=0',
'content-type': 'application/x-www-form-urlencoded',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'
}
response = session.post(search_page_url, headers = headers, data = payload, allow_redirects=True)
soup = BeautifulSoup(response.text)
Это отлично работает и возвращает результаты, однако когда я добавляю этот код в метод, подобный приведенному ниже, он не возвращает правильные результаты, а вместо этого снова показывает страницу поиска:
Код: Выделить всё
def search():
search_page_url = "https://mysite.results/search"
session = requests.Session()
response = session.get(search_page_url)
soup = BeautifulSoup(response.text, "html.parser")
view_state = encode_str(soup.find("input", {"id": "__VIEWSTATE"})["value"])
payload = f"__VIEWSTATE={view_state}"
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'accept-language': 'en-US,en;q=0.9',
'cache-control': 'max-age=0',
'content-type': 'application/x-www-form-urlencoded',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'
}
response = session.post(search_page_url, headers = headers, data = payload, allow_redirects=True)
soup = BeautifulSoup(response.text)
search()
Мне интересно, не связано ли это с областями действия?
Подробнее здесь:
https://stackoverflow.com/questions/793 ... -in-method
1737457583
Anonymous
У меня есть фрагмент кода, который извлекает результаты поиска с веб-сайта. Я маскирую веб-сайт, но делюсь блоком кода здесь. [code]search_page_url = "https://mysite.results/search" session = requests.Session() response = session.get(search_page_url) soup = BeautifulSoup(response.text, "html.parser") view_state = encode_str(soup.find("input", {"id": "__VIEWSTATE"})["value"]) payload = f"__VIEWSTATE={view_state}" headers = { 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'accept-language': 'en-US,en;q=0.9', 'cache-control': 'max-age=0', 'content-type': 'application/x-www-form-urlencoded', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36' } response = session.post(search_page_url, headers = headers, data = payload, allow_redirects=True) soup = BeautifulSoup(response.text) [/code] Это отлично работает и возвращает результаты, однако когда я добавляю этот код в метод, подобный приведенному ниже, он не возвращает правильные результаты, а вместо этого снова показывает страницу поиска: [code]def search(): search_page_url = "https://mysite.results/search" session = requests.Session() response = session.get(search_page_url) soup = BeautifulSoup(response.text, "html.parser") view_state = encode_str(soup.find("input", {"id": "__VIEWSTATE"})["value"]) payload = f"__VIEWSTATE={view_state}" headers = { 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'accept-language': 'en-US,en;q=0.9', 'cache-control': 'max-age=0', 'content-type': 'application/x-www-form-urlencoded', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36' } response = session.post(search_page_url, headers = headers, data = payload, allow_redirects=True) soup = BeautifulSoup(response.text) search() [/code] Мне интересно, не связано ли это с областями действия? Подробнее здесь: [url]https://stackoverflow.com/questions/79374087/code-block-working-fine-without-method-and-incorrect-while-code-block-in-method[/url]