Skip to content

Commit dae4e32

Browse files
committed
new examples
1 parent dc9f66c commit dae4e32

35 files changed

Lines changed: 789 additions & 4 deletions

File tree

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
Use `BeautifulSoup`, `lxml` or similar module instead of `regex`.
2+
3+
---
4+
5+
[BeautifulSoup](https://www.crummy.com/software/BeautifulSoup/bs4/doc/):
6+
7+
from bs4 import BeautifulSoup
8+
9+
text = '<div class="ds"><div title="Today" class="dh">...<div title="Pazartesi" class="dh">26 Agu Pzt'
10+
11+
soup = BeautifulSoup(text, 'html.parser')
12+
13+
for item in soup.select('.ds div[title]'):
14+
print(item['title'])
15+
16+
# or as list comprehensions
17+
18+
titles = [item['title'] for item in soup.select('.ds div[title]')]
19+
print(titles)
20+
21+
---
22+
23+
[lxml](https://lxml.de/):
24+
25+
import lxml.html
26+
27+
text = '<div class="ds"><div title="Today" class="dh">...<div title="Pazartesi" class="dh">26 Agu Pzt'
28+
29+
soup = lxml.html.fromstring(text)
30+
31+
for item in soup.cssselect('.ds div[title]'):
32+
print(item.attrib['title'])
33+
34+
# or as list comprehensions
35+
36+
titles = [item.attrib['title'] for item in soup.cssselect('.ds div[title]')]
37+
print(titles)
38+
39+
---
40+
41+
[PyQuery](https://docs.scrapy.org/en/latest/topics/selectors.html):
42+
43+
import pyquery
44+
45+
text = '<div class="ds"><div title="Today" class="dh">...<div title="Pazartesi" class="dh">26 Agu Pzt'
46+
47+
soup = pyquery.PyQuery(text)
48+
49+
for item in soup('.ds div[title]'):
50+
print(item.attrib['title'])
51+
52+
# or as list comprehensions
53+
54+
titles = [item.attrib['title'] for item in soup('.ds div[title]')]
55+
print(titles)
56+
57+
---
58+
59+
[parsel](https://parsel.readthedocs.io/en/latest/): (used by [Scrapy's Selectors](https://docs.scrapy.org/en/latest/topics/selectors.html))
60+
61+
import parsel
62+
63+
sel = parsel.Selector(text)
64+
65+
for item in sel.css('.ds div[title]'):
66+
print(item.attrib['title'])
67+
68+
# or as list comprehensions
69+
70+
titles = [item.attrib['title'] for item in sel.css('.ds div[title]')]
71+
print(titles)
72+
73+

dash/dynamic-page/main.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
2+
# date: 2019.08.26
3+
# layout as function to change it in any reload
4+
import dash
5+
import dash_html_components as html
6+
import datetime
7+
8+
9+
app = dash.Dash(__name__)
10+
11+
# static layout. It has to restart script to change date
12+
#app.layout = html.Div([
13+
# html.Div(datetime.datetime.now().strftime("%H:%M:%S"))
14+
#])
15+
16+
# dynamic layout. It change date in every reload
17+
18+
def layout():
19+
return html.Div([
20+
html.Div(datetime.datetime.now().strftime("%H:%M:%S"))
21+
])
22+
23+
app.layout = layout
24+
25+
26+
if __name__ == '__main__':
27+
app.run_server()#debug=True)
1.32 KB
Loading
File renamed without changes.
File renamed without changes.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
2+
#------------------------------------------------------------------------------
3+
# decode from base64 to jpg
4+
#------------------------------------------------------------------------------
5+
6+
import base64
7+
8+
html = '<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4QM8RXhpZgAASUkqAAgAAAAJAAABCQABAAAACgAAAAEBCQABAAAACgAAABIBCQABAAAAAQAAABoBCQABAAAASAAAABsBCQABAAAASAAAACgBCQABAAAAAgAAADIBAgAUAAAAegAAABMCCQABAAAAAQAAAGmHBAABAAAAjgAAANwAAAAyMDE5OjA5OjA3IDAzOjM0OjI0AAYAAJAHAAQAAAAwMjIxAZEHAAQAAAABAgMAAKAHAAQAAAAwMTAwAaAJAAEAAAABAAAAAqAJAAEAAAAKAAAAA6AJAAEAAAAKAAAAAAAAAAYAAwEDAAEAAAAGAAAAGgEJAAEAAABIAAAAGwEJAAEAAABIAAAAKAEJAAEAAAACAAAAAQIEAAEAAAAqAQAAAgIEAAEAAAAJAgAAAAAAAP/Y/+AAEEpGSUYAAQEAAAEAAQAA/9sAQwACAQEBAQECAQEBAgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwLCgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgACgAKAwEiAAIRAQMRAf/EABcAAAMBAAAAAAAAAAAAAAAAAAAICQr/xAAeEAACAgMBAQEBAAAAAAAAAAADBAIFAQYHCAkKAP/EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwBreIO/LnqPAucdY9vi84XnaOgcv0baNhD2DkK9zum3WdgqCwsyV42SYbuxNhZhX1q9YAgEWVpJgGxhbFYvKH27+hb7F+WvaHXvMfFfaVgjpvOeoX+r6klbalS2zS9ZX2J1FRmefSM24WIRDxJhkpTlljMyEnOUpZP0Le3faHlr7F9p4r5j9d9Q5zpqNhUvpaloe/2NRWLtP0qD7zEFVDDFArDjTLRp4jiRTsFLPMpklLOp3U9T1XQtVrNF0XWa+lpKWvChTU1SlBZVBUMMDEuEQ8YgIUIRjCMI4xGMY4xjGMY/g//ZAP/bAEMAAgEBAQEBAgEBAQICAgICBAMCAgICBQQEAwQGBQYGBgUGBgYHCQgGBwkHBgYICwgJCgoKCgoGCAsMCwoMCQoKCv/bAEMBAgICAgICBQMDBQoHBgcKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCv/AABEIAAoACgMBIgACEQEDEQH/xAAXAAADAQAAAAAAAAAAAAAAAAAACAkK/8QAHhAAAgIDAQEBAQAAAAAAAAAAAwQCBQEGBwgJCgD/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8Aa3iDvy56jwLnHWPb4vOF52joHL9G2jYQ9g5Cvc7pt1nYKgsLMleNkmG7sTYWYV9avWAIBFlaSYBsYWxWLyh9u/oW+xflr2h17zHxX2lYI6bznqF/q+pJW2pUts0vWV9idRUZnn0jNuFiEQ8SYZKU5ZYzMhJzlKWT9C3t32h5a+xfaeK+Y/XfUOc6ajYVL6WpaHv9jUVi7T9Kg+8xBVQwxQKw40y0aeI4kU7BSzzKZJSzqd1PU9V0LVazRdF1mvpaSlrwoU1NUpQWVQVDDAxLhEPGICFCEYwjCOMRjGOMYxjGP4P/2Q==">'
9+
10+
data_base64 = html.split('base64,')[1] # remove text before encoded data
11+
data_base64 = data_base64[:-2] # remove text after encoded data
12+
13+
#data_base64 = '/9j/4AAQSkZJRgABAQAAAQABAAD/4QM8RXhpZgAASUkqAAgAAAAJAAABCQABAAAACgAAAAEBCQABAAAACgAAABIBCQABAAAAAQAAABoBCQABAAAASAAAABsBCQABAAAASAAAACgBCQABAAAAAgAAADIBAgAUAAAAegAAABMCCQABAAAAAQAAAGmHBAABAAAAjgAAANwAAAAyMDE5OjA5OjA3IDAzOjM0OjI0AAYAAJAHAAQAAAAwMjIxAZEHAAQAAAABAgMAAKAHAAQAAAAwMTAwAaAJAAEAAAABAAAAAqAJAAEAAAAKAAAAA6AJAAEAAAAKAAAAAAAAAAYAAwEDAAEAAAAGAAAAGgEJAAEAAABIAAAAGwEJAAEAAABIAAAAKAEJAAEAAAACAAAAAQIEAAEAAAAqAQAAAgIEAAEAAAAJAgAAAAAAAP/Y/+AAEEpGSUYAAQEAAAEAAQAA/9sAQwACAQEBAQECAQEBAgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwLCgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgACgAKAwEiAAIRAQMRAf/EABcAAAMBAAAAAAAAAAAAAAAAAAAICQr/xAAeEAACAgMBAQEBAAAAAAAAAAADBAIFAQYHCAkKAP/EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwBreIO/LnqPAucdY9vi84XnaOgcv0baNhD2DkK9zum3WdgqCwsyV42SYbuxNhZhX1q9YAgEWVpJgGxhbFYvKH27+hb7F+WvaHXvMfFfaVgjpvOeoX+r6klbalS2zS9ZX2J1FRmefSM24WIRDxJhkpTlljMyEnOUpZP0Le3faHlr7F9p4r5j9d9Q5zpqNhUvpaloe/2NRWLtP0qD7zEFVDDFArDjTLRp4jiRTsFLPMpklLOp3U9T1XQtVrNF0XWa+lpKWvChTU1SlBZVBUMMDEuEQ8YgIUIRjCMI4xGMY4xjGMY/g//ZAP/bAEMAAgEBAQEBAgEBAQICAgICBAMCAgICBQQEAwQGBQYGBgUGBgYHCQgGBwkHBgYICwgJCgoKCgoGCAsMCwoMCQoKCv/bAEMBAgICAgICBQMDBQoHBgcKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCv/AABEIAAoACgMBIgACEQEDEQH/xAAXAAADAQAAAAAAAAAAAAAAAAAACAkK/8QAHhAAAgIDAQEBAQAAAAAAAAAAAwQCBQEGBwgJCgD/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8Aa3iDvy56jwLnHWPb4vOF52joHL9G2jYQ9g5Cvc7pt1nYKgsLMleNkmG7sTYWYV9avWAIBFlaSYBsYWxWLyh9u/oW+xflr2h17zHxX2lYI6bznqF/q+pJW2pUts0vWV9idRUZnn0jNuFiEQ8SYZKU5ZYzMhJzlKWT9C3t32h5a+xfaeK+Y/XfUOc6ajYVL6WpaHv9jUVi7T9Kg+8xBVQwxQKw40y0aeI4kU7BSzzKZJSzqd1PU9V0LVazRdF1mvpaSlrwoU1NUpQWVQVDDAxLhEPGICFCEYwjCOMRjGOMYxjGP4P/2Q=='
14+
15+
data_base64 = data_base64.encode() # convert string to bytes
16+
data = base64.b64decode(data_base64) # decode from base64 (bytes)
17+
open('output-image.jpg', 'wb').write(data) # write bytes to file
18+
19+
20+
21+
#------------------------------------------------------------------------------
22+
# encode jpg to base64 and embed in html
23+
#------------------------------------------------------------------------------
24+
25+
import base64
26+
27+
data = open('image.jpg', 'rb').read() # read bytes from file
28+
data_base64 = base64.b64encode(data) # encode to base64 (bytes)
29+
data_base64 = data_base64.decode() # convert bytes to string
30+
31+
print(data_base64)
32+
33+
html = '<img src="data:image/jpeg;base64,' + data_base64 + '">' # embed in html
34+
open('output-jpg.html', 'w').write(html)

decode-encode/base64-tiff-png-html/main-png.py renamed to decode-encode/base64-tiff-png-jpg-html/main-png.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
data_base64 = data_base64.encode() # convert string to bytes
1616
data = base64.b64decode(data_base64) # decode from base64 (bytes)
17-
open('image.png', 'wb').write(data) # write bytes to file
17+
open('output-image.png', 'wb').write(data) # write bytes to file
1818

1919

2020

decode-encode/base64-tiff-png-html/main-tiff.py renamed to decode-encode/base64-tiff-png-jpg-html/main-tiff.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
data_base64 = data_base64.encode() # convert string to bytes
1616
data = base64.b64decode(data_base64) # decode from base64 (bytes)
17-
open('image.tiff', 'wb').write(data) # write bytes to file
17+
open('output-image.tiff', 'wb').write(data) # write bytes to file
1818

1919

2020

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4QM8RXhpZgAASUkqAAgAAAAJAAABCQABAAAACgAAAAEBCQABAAAACgAAABIBCQABAAAAAQAAABoBCQABAAAASAAAABsBCQABAAAASAAAACgBCQABAAAAAgAAADIBAgAUAAAAegAAABMCCQABAAAAAQAAAGmHBAABAAAAjgAAANwAAAAyMDE5OjA5OjA3IDAzOjM0OjI0AAYAAJAHAAQAAAAwMjIxAZEHAAQAAAABAgMAAKAHAAQAAAAwMTAwAaAJAAEAAAABAAAAAqAJAAEAAAAKAAAAA6AJAAEAAAAKAAAAAAAAAAYAAwEDAAEAAAAGAAAAGgEJAAEAAABIAAAAGwEJAAEAAABIAAAAKAEJAAEAAAACAAAAAQIEAAEAAAAqAQAAAgIEAAEAAAAJAgAAAAAAAP/Y/+AAEEpGSUYAAQEAAAEAAQAA/9sAQwACAQEBAQECAQEBAgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwLCgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgACgAKAwEiAAIRAQMRAf/EABcAAAMBAAAAAAAAAAAAAAAAAAAICQr/xAAeEAACAgMBAQEBAAAAAAAAAAADBAIFAQYHCAkKAP/EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwBreIO/LnqPAucdY9vi84XnaOgcv0baNhD2DkK9zum3WdgqCwsyV42SYbuxNhZhX1q9YAgEWVpJgGxhbFYvKH27+hb7F+WvaHXvMfFfaVgjpvOeoX+r6klbalS2zS9ZX2J1FRmefSM24WIRDxJhkpTlljMyEnOUpZP0Le3faHlr7F9p4r5j9d9Q5zpqNhUvpaloe/2NRWLtP0qD7zEFVDDFArDjTLRp4jiRTsFLPMpklLOp3U9T1XQtVrNF0XWa+lpKWvChTU1SlBZVBUMMDEuEQ8YgIUIRjCMI4xGMY4xjGMY/g//ZAP/bAEMAAgEBAQEBAgEBAQICAgICBAMCAgICBQQEAwQGBQYGBgUGBgYHCQgGBwkHBgYICwgJCgoKCgoGCAsMCwoMCQoKCv/bAEMBAgICAgICBQMDBQoHBgcKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCv/AABEIAAoACgMBIgACEQEDEQH/xAAXAAADAQAAAAAAAAAAAAAAAAAACAkK/8QAHhAAAgIDAQEBAQAAAAAAAAAAAwQCBQEGBwgJCgD/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8Aa3iDvy56jwLnHWPb4vOF52joHL9G2jYQ9g5Cvc7pt1nYKgsLMleNkmG7sTYWYV9avWAIBFlaSYBsYWxWLyh9u/oW+xflr2h17zHxX2lYI6bznqF/q+pJW2pUts0vWV9idRUZnn0jNuFiEQ8SYZKU5ZYzMhJzlKWT9C3t32h5a+xfaeK+Y/XfUOc6ajYVL6WpaHv9jUVi7T9Kg+8xBVQwxQKw40y0aeI4kU7BSzzKZJSzqd1PU9V0LVazRdF1mvpaSlrwoU1NUpQWVQVDDAxLhEPGICFCEYwjCOMRjGOMYxjGP4P/2Q==">
File renamed without changes.

0 commit comments

Comments
 (0)