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 …

Python pomijanie encodowania pewnych znaków w urlencode()

Czasami API oczekuje pewnych wartości jako normalny tekst a nie zakodowany ale urlencode zamienia go. W takiej sytuacji można użyć safe="znaki" aby pominąć kodowanie dla tych znaków.

import urllib.parse

parameters = {'location': "22.303940,114.170372"}

print(urllib.parse.urlencode(parameters))
print(urllib.parse.urlencode(parameters, safe=','))

Wynik:

location …

How to use Requsts to send arguments in url, POST data, JSON data or file to Flask

This code will display different data from requests to show how flask get them.

from flask import Flask, request

app = Flask(__name__)

@app.route("/", methods=['GET', 'POST'])
def index():
    print('args:', request.args)
    print('form:', request.form)
    print('json:', request.json)
    print('data:', request.data)
    return ''

if __name__ == '__main__':
    app …

Jak użyć Requsts do wysłania argumentów w url, danych POST, danych JSON lub pliku do Flask

Ten kod wyświetli różne dane przysłane z requests aby pokazać jak je odebrać we `flask``.

from flask import Flask, request

app = Flask(__name__)

@app.route("/", methods=['GET', 'POST'])
def index():
    print('args:', request.args)
    print('form:', request.form)
    print('json:', request.json)
    print('data:', request.data)
    return ''

if __name__ == '__main__ …

Python: How to scrape aastocks.com with requests

It is example code to scrape it:

# date: 2019.09.16
# https://stackoverflow.com/questions/57861715/scrapy-infinite-scrolling-no-pagination-indication
# http://www.aastocks.com
import requests

newstime = '934735827'
newsid = 'HKEX-EPS-20190815-003587368'

url = 'http://www.aastocks.com/tc/resources/datafeed/getmorenews.ashx?cat=all&newstime={}&newsid={}&period=0&key=&symbol=00001'
url_artickle = "http://www.aastocks …

Python: How to scrape allegro.pl with scrapy

It is example code to scrape it:

# date: 2017.12.10
# https://stackoverflow.com/a/47744135/1832058

import scrapy

#from allegro.items import AllegroItem

#class AllegroItem(scrapy.Item):
#    product_name = scrapy.Field()
#    product_sale_price = scrapy.Field()
#    product_seller = scrapy.Field()

class AllegroPrices(scrapy.Spider):

    name = "AllegroPrices"
    allowed_domains = ["allegro.pl"]

    start_urls = [
        "http://allegro.pl …

Python: How to scrape alloschool.com with scrapy

It is example code to scrape it:

#!/usr/bin/env python3

# date: 2019.07.29
# https://stackoverflow.com/questions/57245315/using-scrapy-how-to-download-pdf-files-from-some-extracted-links

import scrapy

class MySpider(scrapy.Spider):

    name = 'myspider'

    start_urls = [
          'https://www.alloschool.com/course/alriadhiat-alaol-ibtdaii',
    ]

    def parse(self, response):

        for link in response.css('.default .er').xpath('@href').extract …

« Page: 1 / 12 »