SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen

Python - BeautifulSoup bs4
Eueung Mulyana
http://eueung.github.io/python/bs4
Python CodeLabs | Attribution-ShareAlike CC BY-SA
1 / 20
Agenda
bs4 Basics
Easy Web Scraping
2 / 20
 Basics
3 / 20
Example #1
html_doc="""
<html><head><title>TheDormouse'sstory</title></head>
<body>
<pclass="title"><b>TheDormouse'sstory</b></p>
<pclass="story">Onceuponatimetherewerethreelittlesisters;andtheirnameswere
<ahref="http://example.com/elsie"class="sister"id="link1">Elsie</a>,
<ahref="http://example.com/lacie"class="sister"id="link2">Lacie</a>and
<ahref="http://example.com/tillie"class="sister"id="link3">Tillie</a>;
andtheylivedatthebottomofawell.</p>
<pclass="story">...</p>
"""
frombs4importBeautifulSoup
soup=BeautifulSoup(html_doc,'html.parser')
print(soup.prettify())
<html>
<head>
<title>
TheDormouse'sstory
</title>
</head>
<body>
<pclass="title">
<b>
TheDormouse'sstory
</b>
</p>
<pclass="story">
Onceuponatimetherewerethreelittlesisters;andtheir
<aclass="sister"href="http://example.com/elsie"id="link1
<aclass="sister"href="http://example.com/lacie"id="link2
<aclass="sister"href="http://example.com/tillie"id="link
andtheylivedatthebottomofawell.
</p>
<pclass="story">... </p>
</body>
</html>
4 / 20
Example #2
forlinkinsoup.find_all('a'):
print(link.get('href'))
print(soup.get_text())
printsoup.title #<title>TheDormouse'sstory</title>
printsoup.title.name #u'title'
printsoup.title.string #u'TheDormouse'sstory'
printsoup.title.parent.name#u'head'
printsoup.p #<pclass="title"><b>TheDormouse'sstory</b></p>
printsoup.p['class'] #u'title'
printsoup.a #<aclass="sister"href="http://example.com/elsie"id="link1">Elsie</a>
printsoup.find(id="link3") #<aclass="sister"href="http://example.com/tillie"id="link3">Tillie</a>
printsoup.find_all('a') #[<aclass="sister"href="http://example.com/elsie"id="link1">Elsie</a>,
# <aclass="sister"href="http://example.com/lacie"id="link2">Lacie</a>,
# <aclass="sister"href="http://example.com/tillie"id="link3">Tillie</a>]
<title>TheDormouse'sstory</title>
title
TheDormouse'sstory
head
<pclass="title"><b>TheDormouse'sstory</b></p>
[u'title']
<aclass="sister"href="http://example.com/elsie"id="link1"
<aclass="sister"href="http://example.com/tillie"id="link3"
[<aclass="sister"href="http://example.com/elsie"id="link1"
http://example.com/elsie
http://example.com/lacie
http://example.com/tillie
TheDormouse'sstory
TheDormouse'sstory
Onceuponatimetherewerethreelittlesisters;andtheirna
Elsie,
Lacieand
Tillie;
andtheylivedatthebottomofawell.
...
5 / 20
Example #3
head_tag=soup.head
printhead_tag #<head><title>TheDormouse'sstory</title></head>
printhead_tag.contents #[<title>TheDormouse'sstory</title>]
printhead_tag.string #u'TheDormouse'sstory'
forchildinhead_tag.descendants: #<title>TheDormouse'sstory</title>
print(child) #TheDormouse'sstory
#-------
title_tag=head_tag.contents[0]
printtitle_tag #<title>TheDormouse'sstory</title>
printtitle_tag.contents#[u'TheDormouse'sstory']
printtitle_tag.string #u'TheDormouse'sstory'
text=title_tag.contents[0]
#printtext.contents #AttributeError:'NavigableString'objecthasnoattribute'contents'
forchildintitle_tag.children:
print(child) #TheDormouse'sstory
<head><title>TheDormouse'sstory</title></head>
[<title>TheDormouse'sstory</title>]
TheDormouse'sstory
<title>TheDormouse'sstory</title>
TheDormouse'sstory
#-------
<title>TheDormouse'sstory</title>
[u"TheDormouse'sstory"]
TheDormouse'sstory
TheDormouse'sstory
6 / 20
Example #4
#printsoup.contents
printlen(soup.contents) #1
printsoup.contents[0].name #u'html'
printlen(list(soup.children)) #1
printlen(list(soup.descendants))#25
#--------
print(soup.html.string)#None
#forstringinsoup.strings:
#print(repr(string))
forstringinsoup.stripped_strings:
print(repr(string))
1
html
1
25
None
#--------
u"TheDormouse'sstory"
u"TheDormouse'sstory"
u'Onceuponatimetherewerethreelittlesisters;andtheir
u'Elsie'
u','
u'Lacie'
u'and'
u'Tillie'
u';nandtheylivedatthebottomofawell.'
u'...'
7 / 20
Example #5
soup=BeautifulSoup('<bclass="boldest">Extremelybold</b>'
tag=soup.b
printtype(tag)
printtag.name #u'b'
tag.name="blockquote"
printtag #<blockquoteclass="boldest">Extremelybold</blockquote>
printtag['class'] #u'boldest'
printtag.attrs #{u'class':u'boldest'}
tag['class']='verybold'
tag['id']=1
printtag #<blockquoteclass="verybold"id="1">Extremelybold</blockquote>
#-------------
deltag['class']
deltag['id']
printtag #<blockquote>Extremelybold</blockquote>
#printtag['class'] #KeyError:'class'
print(tag.get('class'))#None
<class'bs4.element.Tag'>
b
<blockquoteclass="boldest">Extremelybold</blockquote>
['boldest']
{'class':['boldest']}
<blockquoteclass="verybold"id="1">Extremelybold</blockquote
#-------------
<blockquote>Extremelybold</blockquote>
None
8 / 20
Example #6
class_soup=BeautifulSoup('<pclass="bodystrikeout"></p>'
printclass_soup.p['class'] #["body","strikeout"]
class_soup=BeautifulSoup('<pclass="body"></p>')
printclass_soup.p['class'] #["body"]
id_soup=BeautifulSoup('<pid="myid"></p>')
printid_soup.p['id'] #'myid'
#----------
rel_soup=BeautifulSoup('<p>Backtothe<arel="index">homepage</a></p>'
printrel_soup.a['rel'] #['index']
rel_soup.a['rel']=['index','contents']
print(rel_soup.p) #<p>Backtothe<arel="indexcontents">homepage</a></p>
#----------
xml_soup=BeautifulSoup('<pclass="bodystrikeout"></p>',
printxml_soup.p['class'] #u'bodystrikeout'
['body','strikeout']
['body']
myid
#----------
['index']
<p>Backtothe<arel="indexcontents">homepage</a></p>
#----------
bodystrikeout
When you turn a tag back into a string, multiple attribute
values are consolidated.
If you parse a document as XML, there are no multi-
valued attributes.
The relattribute specifies the relationship between the
current document and the linked document (Only used if
the hrefattribute is present).
9 / 20
 Easy Web Scraping
@miguelgrinberg
10 / 20
PyCon 2014 - Page Index
11 / 20
PyCon 2014 - Page Details
12 / 20
PyCon 2014 - YouTube
13 / 20
Test #1
importrequests
importbs4
response=requests.get('http://pyvideo.org/category/50/pycon-us-2014'
soup=bs4.BeautifulSoup(response.text)
#atags=soup.select('div#video-summary-contenta[href^=/video]')
links=[a.attrs.get('href')forainsoup.select('div#video-summary-contenta[href^=/video]'
printlinks[1:5]
['/video/2676/2d3d-graphics-with-python-on-mobile-platforms'
links=[a.attrs.get('href')forainsoup.select('div#video-summary-contentstronga[href^=/video]'
pycon-scraper.py #1
importbs4
importre
importrequests
importargparse
frommultiprocessing.poolimportThreadPoolasPool
root_url='http://pyvideo.org'
index_url=root_url+'/category/50/pycon-us-2014'
defget_video_page_urls():
response=requests.get(index_url)
soup=bs4.BeautifulSoup(response.text)
allvids=[a.attrs.get('href')forainsoup.select('div#v
returnallvids[0:10]
14 / 20
Test #2
root_url='http://pyvideo.org'
video_page_url='/video/2668/writing-restful-web-services-with-flask'
video_data={}
response=requests.get(root_url+video_page_url)
soup=bs4.BeautifulSoup(response.text)
video_data['title']=soup.select('div#videoboxh3')[0].get_text()
video_data['speakers']=[a.get_text()forainsoup.select(
video_data['youtube_url']=soup.select('div#sidebara[href^=http://www.youtube.com]'
printvideo_data
{'speakers':[u'MiguelGrinberg'],'youtube_url':u'http://www.youtube.com/watch?v=px_vg9Far1Y'
pycon-scraper.py #2
defget_video_data(video_page_url):
video_data={}
response=requests.get(root_url+video_page_url)
soup=bs4.BeautifulSoup(response.text)
video_data['title']=soup.select('div#videoboxh3')[0].ge
video_data['speakers']=[a.get_text()forainsoup.selec
video_data['youtube_url']=soup.select('div#sidebara[hre
#...
returnvideo_data
15 / 20
Test #3
importrequests
importbs4
importre
response=requests.get('https://www.youtube.com/watch?v=px_vg9Far1Y'
soup=bs4.BeautifulSoup(response.text)
video_data['views']=int(re.sub('[^0-9]','',soup.select('.watch-view-count'
video_data['likes']=int(re.sub('[^0-9]','',soup.select('.like-button-renderer-like-buttonspan.yt-uix-button-content'
video_data['dislikes']=int(re.sub('[^0-9]','',soup.select(
printvideo_data
{'speakers':[u'MiguelGrinberg'],'views':11908,'title':
pycon-scraper.py #3
defget_video_data(video_page_url):
#...
#initializecounters
video_data['views']=0
video_data['likes']=0
video_data['dislikes']=0
try:
response=requests.get(video_data['youtube_url'],hea
soup=bs4.BeautifulSoup(response.text)
video_data['views']=int(re.sub('[^0-9]','',soup.se
video_data['likes']=int(re.sub('[^0-9]','',soup.sel
video_data['dislikes']=int(re.sub('[^0-9]','',soup.
except:
#someorallofthecounterscouldnotbescraped
pass
returnvideo_data
16 / 20
pycon-scraper.py #4
Notes
defshow_video_stats(options):
pool=Pool(8)
video_page_urls=get_video_page_urls()
results=pool.map(get_video_data,video_page_urls)
#-----
func(video):returnvideo[options.sort]
defparse_args():
parser=argparse.ArgumentParser(description='ShowPyCon2014videostatistics.'
parser.add_argument('--sort',metavar='FIELD',choices=[
parser.add_argument('--max',metavar='MAX',type=int,help=
parser.add_argument('--csv',action='store_true',default=
parser.add_argument('--workers',type=int,default=8,help=
returnparser.parse_args()
#ex:pythonpycon-scraper.py--sortviews--max25--workers8
defshow_video_stats(options):
pool=Pool(options.workers)
video_page_urls=get_video_page_urls()
results=sorted(pool.map(get_video_data,video_page_urls)
printlen(results)
max=options.max
ifmaxisNoneormax>len(results):
max=len(results)
ifoptions.csv:
print(u'"title","speakers","views","likes","dislikes"
else:
print(u'Views +1 -1Title(Speakers)')
foriinrange(max):
ifoptions.csv:
print(u'"{0}","{1}",{2},{3},{4}'.format(results[i]
else:
print(u'{0:5d}{1:3d}{2:3d}{3}({4})'.format(res
if__name__=='__main__':
show_video_stats(parse_args())
17 / 20
$> python pycon-scraper.py --sort views
Views +1 -1Title(Speakers)
8608 80 10AnalyzingRapLyricswithPython(JulieLavoie)
7302 28 1BuildingtheApp(MikeBayer)
4603 25 32D/3DgraphicswithPythononmobileplatforms(NikoSkrypnik)
4056 30 0DesigningDjango'sMigrations(AndrewGodwin)
3923 41 0CheapHelicoptersInMyLivingRoom(NedJacksonLovely)
3407 36 2AScenicDrivethroughtheDjangoRequest-ResponseCycle(DanLanger)
3343 33 0AdvancedtechniquesforWebfunctionaltesting(JulienPhalip)
1598 28 0Dataintensivebiologyinthecloud:instrumentingALLthethings(C.TitusBrown)
941 8 0DeliverYourSoftwareInAnEnvelope(AugieFackler,NathanielManista)
751 1 0Closingaddress-PyCon2014(2014/04/13)()
18 / 20
References
1. Beautiful Soup Documentation
2. Easy Web Scraping with Python
3. Generate statistics about PyCon 2014 videos
19 / 20

END
Eueung Mulyana
http://eueung.github.io/python/bs4
Python CodeLabs | Attribution-ShareAlike CC BY-SA
20 / 20

Weitere Àhnliche Inhalte

Was ist angesagt?

Multisite Van Dyk Walkah
Multisite Van Dyk WalkahMultisite Van Dyk Walkah
Multisite Van Dyk Walkahjvandyk
 
The duck soup link building guide
The duck soup link building guideThe duck soup link building guide
The duck soup link building guideTabish Javed
 
Turbogears Presentation
Turbogears PresentationTurbogears Presentation
Turbogears Presentationdidip
 
HTML5 and Accessibility sitting in a tree
HTML5 and Accessibility sitting in a treeHTML5 and Accessibility sitting in a tree
HTML5 and Accessibility sitting in a treebrucelawson
 
HTML5, The Open Web, and what it means for you - Altran
HTML5, The Open Web, and what it means for you - AltranHTML5, The Open Web, and what it means for you - Altran
HTML5, The Open Web, and what it means for you - AltranRobert Nyman
 
Seo Cheat Sheet
Seo Cheat SheetSeo Cheat Sheet
Seo Cheat SheetAnchal Thakur
 
Creating Semantic Mashups Bridging Web 2 0 And The Semantic Web Presentation 1
Creating Semantic Mashups  Bridging Web 2 0 And The Semantic Web Presentation 1Creating Semantic Mashups  Bridging Web 2 0 And The Semantic Web Presentation 1
Creating Semantic Mashups Bridging Web 2 0 And The Semantic Web Presentation 1jward5519
 
Creating Semantic Mashups Bridging Web 2 0 And The Semantic Web Presentation 1
Creating Semantic Mashups  Bridging Web 2 0 And The Semantic Web Presentation 1Creating Semantic Mashups  Bridging Web 2 0 And The Semantic Web Presentation 1
Creating Semantic Mashups Bridging Web 2 0 And The Semantic Web Presentation 1jward5519
 
Stefan Judis "Did we(b development) lose the right direction?"
Stefan Judis "Did we(b development) lose the right direction?"Stefan Judis "Did we(b development) lose the right direction?"
Stefan Judis "Did we(b development) lose the right direction?"Fwdays
 
WebShell - confoo 2011 - sean coates
WebShell - confoo 2011 - sean coatesWebShell - confoo 2011 - sean coates
WebShell - confoo 2011 - sean coatesBachkoutou Toutou
 
Speed is Essential for a Great Web Experience
Speed is Essential for a Great Web ExperienceSpeed is Essential for a Great Web Experience
Speed is Essential for a Great Web ExperienceAndy Davies
 
Drupal Theme Development - DrupalCon Chicago 2011
Drupal Theme Development - DrupalCon Chicago 2011Drupal Theme Development - DrupalCon Chicago 2011
Drupal Theme Development - DrupalCon Chicago 2011Ryan Price
 
Front End Craftsmanship
Front End CraftsmanshipFront End Craftsmanship
Front End Craftsmanshiprocketspops
 
Grok Drupal (7) Theming
Grok Drupal (7) ThemingGrok Drupal (7) Theming
Grok Drupal (7) ThemingPINGV
 
SEO - Stop Eating Your Words - Avoid Cannibalisation Of Your Sites
SEO - Stop Eating Your Words - Avoid Cannibalisation Of Your SitesSEO - Stop Eating Your Words - Avoid Cannibalisation Of Your Sites
SEO - Stop Eating Your Words - Avoid Cannibalisation Of Your SitesDawn Anderson MSc DigM
 
Digital Library Federation, Fall 07, Connotea Presentation
Digital Library Federation, Fall 07, Connotea PresentationDigital Library Federation, Fall 07, Connotea Presentation
Digital Library Federation, Fall 07, Connotea PresentationIan Mulvany
 
Dmitry sharkov - Maturing Your Cucumber Suites
Dmitry sharkov   - Maturing Your Cucumber SuitesDmitry sharkov   - Maturing Your Cucumber Suites
Dmitry sharkov - Maturing Your Cucumber SuitesQA or the Highway
 
Advanced and Hidden WordPress APIs
Advanced and Hidden WordPress APIsAdvanced and Hidden WordPress APIs
Advanced and Hidden WordPress APIsandrewnacin
 
Theme Kickstart
Theme KickstartTheme Kickstart
Theme KickstartPeter
 

Was ist angesagt? (20)

Multisite Van Dyk Walkah
Multisite Van Dyk WalkahMultisite Van Dyk Walkah
Multisite Van Dyk Walkah
 
The duck soup link building guide
The duck soup link building guideThe duck soup link building guide
The duck soup link building guide
 
Turbogears Presentation
Turbogears PresentationTurbogears Presentation
Turbogears Presentation
 
HTML5 and Accessibility sitting in a tree
HTML5 and Accessibility sitting in a treeHTML5 and Accessibility sitting in a tree
HTML5 and Accessibility sitting in a tree
 
HTML5, The Open Web, and what it means for you - Altran
HTML5, The Open Web, and what it means for you - AltranHTML5, The Open Web, and what it means for you - Altran
HTML5, The Open Web, and what it means for you - Altran
 
Seo Cheat Sheet
Seo Cheat SheetSeo Cheat Sheet
Seo Cheat Sheet
 
Creating Semantic Mashups Bridging Web 2 0 And The Semantic Web Presentation 1
Creating Semantic Mashups  Bridging Web 2 0 And The Semantic Web Presentation 1Creating Semantic Mashups  Bridging Web 2 0 And The Semantic Web Presentation 1
Creating Semantic Mashups Bridging Web 2 0 And The Semantic Web Presentation 1
 
Creating Semantic Mashups Bridging Web 2 0 And The Semantic Web Presentation 1
Creating Semantic Mashups  Bridging Web 2 0 And The Semantic Web Presentation 1Creating Semantic Mashups  Bridging Web 2 0 And The Semantic Web Presentation 1
Creating Semantic Mashups Bridging Web 2 0 And The Semantic Web Presentation 1
 
Stefan Judis "Did we(b development) lose the right direction?"
Stefan Judis "Did we(b development) lose the right direction?"Stefan Judis "Did we(b development) lose the right direction?"
Stefan Judis "Did we(b development) lose the right direction?"
 
WebShell - confoo 2011 - sean coates
WebShell - confoo 2011 - sean coatesWebShell - confoo 2011 - sean coates
WebShell - confoo 2011 - sean coates
 
Speed is Essential for a Great Web Experience
Speed is Essential for a Great Web ExperienceSpeed is Essential for a Great Web Experience
Speed is Essential for a Great Web Experience
 
Drupal Theme Development - DrupalCon Chicago 2011
Drupal Theme Development - DrupalCon Chicago 2011Drupal Theme Development - DrupalCon Chicago 2011
Drupal Theme Development - DrupalCon Chicago 2011
 
Front End Craftsmanship
Front End CraftsmanshipFront End Craftsmanship
Front End Craftsmanship
 
P.S. I love you
P.S. I love youP.S. I love you
P.S. I love you
 
Grok Drupal (7) Theming
Grok Drupal (7) ThemingGrok Drupal (7) Theming
Grok Drupal (7) Theming
 
SEO - Stop Eating Your Words - Avoid Cannibalisation Of Your Sites
SEO - Stop Eating Your Words - Avoid Cannibalisation Of Your SitesSEO - Stop Eating Your Words - Avoid Cannibalisation Of Your Sites
SEO - Stop Eating Your Words - Avoid Cannibalisation Of Your Sites
 
Digital Library Federation, Fall 07, Connotea Presentation
Digital Library Federation, Fall 07, Connotea PresentationDigital Library Federation, Fall 07, Connotea Presentation
Digital Library Federation, Fall 07, Connotea Presentation
 
Dmitry sharkov - Maturing Your Cucumber Suites
Dmitry sharkov   - Maturing Your Cucumber SuitesDmitry sharkov   - Maturing Your Cucumber Suites
Dmitry sharkov - Maturing Your Cucumber Suites
 
Advanced and Hidden WordPress APIs
Advanced and Hidden WordPress APIsAdvanced and Hidden WordPress APIs
Advanced and Hidden WordPress APIs
 
Theme Kickstart
Theme KickstartTheme Kickstart
Theme Kickstart
 

Ähnlich wie Python beautiful soup - bs4

TOSSUG HTML5 èź€æ›žæœƒ æ–°æš™ç±€èˆ‡èĄšć–ź
TOSSUG HTML5 èź€æ›žæœƒ æ–°æš™ç±€èˆ‡èĄšć–źTOSSUG HTML5 èź€æ›žæœƒ æ–°æš™ç±€èˆ‡èĄšć–ź
TOSSUG HTML5 èź€æ›žæœƒ æ–°æš™ç±€èˆ‡èĄšć–źć‰æ Œ 高
 
Xhtml Basics
Xhtml BasicsXhtml Basics
Xhtml BasicsAkramWaseem
 
Xhtml Basics
Xhtml BasicsXhtml Basics
Xhtml BasicsAkramWaseem
 
#3 HTML & CSS [know-how]
#3 HTML & CSS [know-how]#3 HTML & CSS [know-how]
#3 HTML & CSS [know-how]Dalibor Gogic
 
Introduction to SPARQL
Introduction to SPARQLIntroduction to SPARQL
Introduction to SPARQLPedro Szekely
 
Facebook Open Graph implementation in the Harvard Gazette
Facebook Open Graph implementation in the Harvard GazetteFacebook Open Graph implementation in the Harvard Gazette
Facebook Open Graph implementation in the Harvard GazetteHarvard Web Working Group
 
Expression Engine Designer
Expression Engine   DesignerExpression Engine   Designer
Expression Engine DesignerMatias
 
Why ExpressionEngine is Great for Designers
Why ExpressionEngine is Great for DesignersWhy ExpressionEngine is Great for Designers
Why ExpressionEngine is Great for DesignersFortySeven Media
 
REST teori og praksis; REST in theory and practice
REST teori og praksis; REST in theory and practiceREST teori og praksis; REST in theory and practice
REST teori og praksis; REST in theory and practicehamnis
 
Html5 quick-learning-quide
Html5 quick-learning-quideHtml5 quick-learning-quide
Html5 quick-learning-quideAshok Suragala
 
Html5 quick-learning-quide
Html5 quick-learning-quideHtml5 quick-learning-quide
Html5 quick-learning-quideJerry Wijaya
 
Html5 quick-learning-quide
Html5 quick-learning-quideHtml5 quick-learning-quide
Html5 quick-learning-quidePL dream
 
An Introduction to HTML5
An Introduction to HTML5An Introduction to HTML5
An Introduction to HTML5Steven Chipman
 
Prezdev parsing & crawling libs
Prezdev parsing & crawling libsPrezdev parsing & crawling libs
Prezdev parsing & crawling libsadrienpad
 

Ähnlich wie Python beautiful soup - bs4 (20)

TOSSUG HTML5 èź€æ›žæœƒ æ–°æš™ç±€èˆ‡èĄšć–ź
TOSSUG HTML5 èź€æ›žæœƒ æ–°æš™ç±€èˆ‡èĄšć–źTOSSUG HTML5 èź€æ›žæœƒ æ–°æš™ç±€èˆ‡èĄšć–ź
TOSSUG HTML5 èź€æ›žæœƒ æ–°æš™ç±€èˆ‡èĄšć–ź
 
xhtml_basics
xhtml_basicsxhtml_basics
xhtml_basics
 
Xhtml Basics
Xhtml BasicsXhtml Basics
Xhtml Basics
 
xhtml_basics
xhtml_basicsxhtml_basics
xhtml_basics
 
Xhtml Basics
Xhtml BasicsXhtml Basics
Xhtml Basics
 
#3 HTML & CSS [know-how]
#3 HTML & CSS [know-how]#3 HTML & CSS [know-how]
#3 HTML & CSS [know-how]
 
Introduction to SPARQL
Introduction to SPARQLIntroduction to SPARQL
Introduction to SPARQL
 
Facebook Open Graph implementation in the Harvard Gazette
Facebook Open Graph implementation in the Harvard GazetteFacebook Open Graph implementation in the Harvard Gazette
Facebook Open Graph implementation in the Harvard Gazette
 
Expression Engine Designer
Expression Engine   DesignerExpression Engine   Designer
Expression Engine Designer
 
Why ExpressionEngine is Great for Designers
Why ExpressionEngine is Great for DesignersWhy ExpressionEngine is Great for Designers
Why ExpressionEngine is Great for Designers
 
Artdm171 Week4 Tags
Artdm171 Week4 TagsArtdm171 Week4 Tags
Artdm171 Week4 Tags
 
REST teori og praksis; REST in theory and practice
REST teori og praksis; REST in theory and practiceREST teori og praksis; REST in theory and practice
REST teori og praksis; REST in theory and practice
 
Html5 quick learning guide
Html5 quick learning guideHtml5 quick learning guide
Html5 quick learning guide
 
Html5 quick-learning-quide
Html5 quick-learning-quideHtml5 quick-learning-quide
Html5 quick-learning-quide
 
Html5 quick-learning-quide
Html5 quick-learning-quideHtml5 quick-learning-quide
Html5 quick-learning-quide
 
Html5 quick-learning-quide
Html5 quick-learning-quideHtml5 quick-learning-quide
Html5 quick-learning-quide
 
An Introduction to HTML5
An Introduction to HTML5An Introduction to HTML5
An Introduction to HTML5
 
Prezdev parsing & crawling libs
Prezdev parsing & crawling libsPrezdev parsing & crawling libs
Prezdev parsing & crawling libs
 
Fun with Python
Fun with PythonFun with Python
Fun with Python
 
Html5
Html5Html5
Html5
 

Mehr von Eueung Mulyana

Hyper-Connectivity and Data Proliferation - Ecosystem Perspective
Hyper-Connectivity and Data Proliferation - Ecosystem PerspectiveHyper-Connectivity and Data Proliferation - Ecosystem Perspective
Hyper-Connectivity and Data Proliferation - Ecosystem PerspectiveEueung Mulyana
 
Industry 4.0 And Beyond The A.I* For Surviving A Tech-Accelerated World
Industry 4.0 And Beyond The A.I* For Surviving A Tech-Accelerated WorldIndustry 4.0 And Beyond The A.I* For Surviving A Tech-Accelerated World
Industry 4.0 And Beyond The A.I* For Surviving A Tech-Accelerated WorldEueung Mulyana
 
Blockchain Introduction
Blockchain IntroductionBlockchain Introduction
Blockchain IntroductionEueung Mulyana
 
Bringing Automation to the Classroom: A ChatOps-Based Approach
Bringing Automation to the Classroom: A ChatOps-Based ApproachBringing Automation to the Classroom: A ChatOps-Based Approach
Bringing Automation to the Classroom: A ChatOps-Based ApproachEueung Mulyana
 
FinTech & Cryptocurrency Introduction
FinTech & Cryptocurrency IntroductionFinTech & Cryptocurrency Introduction
FinTech & Cryptocurrency IntroductionEueung Mulyana
 
Open Source Networking Overview
Open Source Networking OverviewOpen Source Networking Overview
Open Source Networking OverviewEueung Mulyana
 
ONOS SDN Controller - Clustering Tests & Experiments
ONOS SDN Controller - Clustering Tests & Experiments ONOS SDN Controller - Clustering Tests & Experiments
ONOS SDN Controller - Clustering Tests & Experiments Eueung Mulyana
 
Open stack pike-devstack-tutorial
Open stack pike-devstack-tutorialOpen stack pike-devstack-tutorial
Open stack pike-devstack-tutorialEueung Mulyana
 
Basic onos-tutorial
Basic onos-tutorialBasic onos-tutorial
Basic onos-tutorialEueung Mulyana
 
ONOS SDN Controller - Introduction
ONOS SDN Controller - IntroductionONOS SDN Controller - Introduction
ONOS SDN Controller - IntroductionEueung Mulyana
 
OpenDaylight SDN Controller - Introduction
OpenDaylight SDN Controller - IntroductionOpenDaylight SDN Controller - Introduction
OpenDaylight SDN Controller - IntroductionEueung Mulyana
 
Android Programming Basics
Android Programming BasicsAndroid Programming Basics
Android Programming BasicsEueung Mulyana
 
Cloud Computing: Overview and Examples
Cloud Computing: Overview and ExamplesCloud Computing: Overview and Examples
Cloud Computing: Overview and ExamplesEueung Mulyana
 
selected input/output - sensors and actuators
selected input/output - sensors and actuatorsselected input/output - sensors and actuators
selected input/output - sensors and actuatorsEueung Mulyana
 
Connected Things, IoT and 5G
Connected Things, IoT and 5GConnected Things, IoT and 5G
Connected Things, IoT and 5GEueung Mulyana
 
Connectivity for Local Sensors and Actuators Using nRF24L01+
Connectivity for Local Sensors and Actuators Using nRF24L01+Connectivity for Local Sensors and Actuators Using nRF24L01+
Connectivity for Local Sensors and Actuators Using nRF24L01+Eueung Mulyana
 
NodeMCU with Blynk and Firebase
NodeMCU with Blynk and FirebaseNodeMCU with Blynk and Firebase
NodeMCU with Blynk and FirebaseEueung Mulyana
 
Trends and Enablers - Connected Services and Cloud Computing
Trends and Enablers  - Connected Services and Cloud ComputingTrends and Enablers  - Connected Services and Cloud Computing
Trends and Enablers - Connected Services and Cloud ComputingEueung Mulyana
 

Mehr von Eueung Mulyana (20)

FGD Big Data
FGD Big DataFGD Big Data
FGD Big Data
 
Hyper-Connectivity and Data Proliferation - Ecosystem Perspective
Hyper-Connectivity and Data Proliferation - Ecosystem PerspectiveHyper-Connectivity and Data Proliferation - Ecosystem Perspective
Hyper-Connectivity and Data Proliferation - Ecosystem Perspective
 
Industry 4.0 And Beyond The A.I* For Surviving A Tech-Accelerated World
Industry 4.0 And Beyond The A.I* For Surviving A Tech-Accelerated WorldIndustry 4.0 And Beyond The A.I* For Surviving A Tech-Accelerated World
Industry 4.0 And Beyond The A.I* For Surviving A Tech-Accelerated World
 
Blockchain Introduction
Blockchain IntroductionBlockchain Introduction
Blockchain Introduction
 
Bringing Automation to the Classroom: A ChatOps-Based Approach
Bringing Automation to the Classroom: A ChatOps-Based ApproachBringing Automation to the Classroom: A ChatOps-Based Approach
Bringing Automation to the Classroom: A ChatOps-Based Approach
 
FinTech & Cryptocurrency Introduction
FinTech & Cryptocurrency IntroductionFinTech & Cryptocurrency Introduction
FinTech & Cryptocurrency Introduction
 
Open Source Networking Overview
Open Source Networking OverviewOpen Source Networking Overview
Open Source Networking Overview
 
ONOS SDN Controller - Clustering Tests & Experiments
ONOS SDN Controller - Clustering Tests & Experiments ONOS SDN Controller - Clustering Tests & Experiments
ONOS SDN Controller - Clustering Tests & Experiments
 
Open stack pike-devstack-tutorial
Open stack pike-devstack-tutorialOpen stack pike-devstack-tutorial
Open stack pike-devstack-tutorial
 
Basic onos-tutorial
Basic onos-tutorialBasic onos-tutorial
Basic onos-tutorial
 
ONOS SDN Controller - Introduction
ONOS SDN Controller - IntroductionONOS SDN Controller - Introduction
ONOS SDN Controller - Introduction
 
OpenDaylight SDN Controller - Introduction
OpenDaylight SDN Controller - IntroductionOpenDaylight SDN Controller - Introduction
OpenDaylight SDN Controller - Introduction
 
Mininet Basics
Mininet BasicsMininet Basics
Mininet Basics
 
Android Programming Basics
Android Programming BasicsAndroid Programming Basics
Android Programming Basics
 
Cloud Computing: Overview and Examples
Cloud Computing: Overview and ExamplesCloud Computing: Overview and Examples
Cloud Computing: Overview and Examples
 
selected input/output - sensors and actuators
selected input/output - sensors and actuatorsselected input/output - sensors and actuators
selected input/output - sensors and actuators
 
Connected Things, IoT and 5G
Connected Things, IoT and 5GConnected Things, IoT and 5G
Connected Things, IoT and 5G
 
Connectivity for Local Sensors and Actuators Using nRF24L01+
Connectivity for Local Sensors and Actuators Using nRF24L01+Connectivity for Local Sensors and Actuators Using nRF24L01+
Connectivity for Local Sensors and Actuators Using nRF24L01+
 
NodeMCU with Blynk and Firebase
NodeMCU with Blynk and FirebaseNodeMCU with Blynk and Firebase
NodeMCU with Blynk and Firebase
 
Trends and Enablers - Connected Services and Cloud Computing
Trends and Enablers  - Connected Services and Cloud ComputingTrends and Enablers  - Connected Services and Cloud Computing
Trends and Enablers - Connected Services and Cloud Computing
 

KĂŒrzlich hochgeladen

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel AraĂșjo
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

KĂŒrzlich hochgeladen (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

Python beautiful soup - bs4