Search on blog:

Scraping: How to download tgz file from eogauth.mines.edu.

It it problem from Stackoverflow.

The main problem was wrong url used in POST.

Often form sends data to the same url as page with form but it doesn't have to be true on all pages.

Form may send data to different url which can be defined as action in HTML <form action=...>

I use BeautifulSoup to get this information from HTML.

I don't have username and password to test all elements but at least now POST gets page with login form and message Invalid username or password. instead of page with message Invalid Request.

import requests
from bs4 import BeautifulSoup as BS

s = requests.Session()
#s.headers.update({'User-Agent': 'Mozilla/5.0'})

# --- use tgz to get login page -------

url_tgz = "https://eogdata.mines.edu/wwwdata/viirs_products/dnb_composites/v10//201707/vcmslcfg/SVDNB_npp_20170701-20170731_75N060W_vcmslcfg_v10_c201708061200.tgz"

r = s.get(url_tgz)
#print(r.status_code)
#print(r.history)
print('\n--- url page ---\n')
print(r.url)

# --- find url in form ---

soup = BS(r.text, 'html.parser')
item = soup.find('form')
url = item['action']

print('\n--- url form ---\n')
print(url)

print('\n--- url page == url page ---\n')
print( r.url == url )

# --- login ---

payload = {
    'username': 'salvandi69@gmail.com',
    'password': '123asdzxc',
    'credentialId': '',
}

r = s.post(url, data=payload)
#print(r.status_code)
#print(r.history)
#print(r.url)
#print(r.text)

# --- result ---

print('\n--- login ---\n')
soup = BS(r.text, 'html.parser')
item = soup.find('span', {'class': 'kc-feedback-text'})
if item:
    print('Message:', item.text)
else:
    print("Can't see error message")

print('\n--- end ---\n')

Notes:

Stackoverflow: Title

Jak użyć DevTools w Firefox do szukania danych JSON na EpicGames.com

Film pokazuje Devtools w Firefox, zakłada Network, filtr XHR.

Można dostać się do DevTools używając menu Web Developer lub skrótu klawiszowego F12.

Po kliknięciu w link w DevTools pokazuje także boczne zakładki Headers i Response z danymi JSON.

Używając na linku menu kontektowego (prawy przycisk myszy) można także użyć Open …

Python: How to use requests to send JSON data, POST data, args in url and files to server aiohttp.web

JSON data

requests uses json= to send JSON and it automatically convert dictionary and add header 'Content-Type': 'application/json'.

import requests

r = requests.post('http://0.0.0.0:8080/test', json={'param1': 'value1', 'param2': 'value2'})

The same with standard data= .

import requests
import json

r = requests.post('http://0 …

Python: Jak użyć requests do wysłania danych JSON, danych POST, argumentów w url i plików do serwera aiohttp.web

Dane JSON

requests używa json= do wysyłania JSON i automatycznie zamienia na text i dodaje nagłówek 'Content-Type': 'application/json'.

import requests

r = requests.post('http://0.0.0.0:8080/test', json={'param1': 'value1', 'param2': 'value2'})

To samo z użyciem standardowego data= .

import requests
import json

r = requests.post('http …

Python: Jak zapobiegać użyciu znaku procenta w url przez requests?

Jeśli potrzebujesz url z parametem podobnym do poniższego (z + i :)

    key=site:dummy+type:example+group:wheel

i użyjesz standardowej metody przekazywania parametrów w requests

    payload = {
        'key': 'site:dummy+type:example+group:wheel'
    }

    r = requests.get(url, params=payload)

to zostanie on przekonwetowany do postaci "bezpiecznej" dla przesyłu parametrów

    key …

Python: Dlaczego `requests` niepoprawnie dekoduje tekst zamiast użyć UTF-8

Czasami requests niepoprawnie dekoduje tekst w response.text - używa ISO-8859-1 (Latin-1) zamiast UTF-8 nawet jeśli w HTML jest <meta charset="uft-8"> lub <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">.

Można to zobaczyć w response.headers['content-type'] oraz response.encoding

Problem jest ponieważ on nie używa <meta> ale nagłówka Content-Type …

« Page: 1 / 24 »