from urllib.request import urlopen
import re
html = urlopen("https://klajosw.blogspot.com/2020/03/labirintus-generalas-as-megoldas-python.html").read().decode('utf-8')
print(html[1:200]) ## tartalom első 200 karaketrének kiolvasása
print('--------------')
res = re.findall(r"<title>(.+?)</title>", html)
if res :
print("\nAz oldal title tartalma: ", res[0])
res = re.findall(r"<p>(.*?)</p>", html, flags=re.DOTALL) # re.DOTALL if multi line
if res :
print("\nAz oldal paragrafusai: ")
for i in res :
print(i)
res = re.findall(r'href="(.*?)"', html)
if res :
print("\nAz oldal Linkjei: ")
for i in res :
print(i)
!DOCTYPE html> <html class='v2' dir='ltr' lang='hu'> <head> <link href='https://www.blogger.com/static/v1/widgets/3597120983-css_bundle_v2.css' rel='stylesheet' type='text/css'/> <meta content='width -------------- Az oldal title tartalma: IT, BI, DWH, DM, ...: Labirintus generálás ás megoldás python Az oldal paragrafusai: Kicsit fejlesztettem és teszteltem magamat. https://docs.microsoft.com/hu-hu/ Érdemes végig csinálni, vagy legalább kipróbálni. ... Az oldal Linkjei: https://klajosw.blogspot.com/feeds/posts/default https://klajosw.blogspot.com/feeds/posts/default?alt=rss https://www.blogger.com/feeds/3045332980529254583/posts/default https://klajosw.blogspot.com/feeds/5572427981398595874/comments/default http://weblog.jamisbuck.org/2011/1/3/maze-generation-kruskal-s-algorithm http://weblog.jamisbuck.org/2011/1/10/maze-generation-prim-s-algorithm http://weblog.jamisbuck.org/2010/12/27/maze-generation-recursive-backtracking http://weblog.jamisbuck.org/2011/1/17/maze-generation-aldous-broder-algorithm http://weblog.jamisbuck.org/2011/1/27/maze-generation-growing-tree-algorithm http://weblog.jamisbuck.org/2011/1/24/maze-generation-hunt-and-kill-algorithm http://weblog.jamisbuck.org/2011/1/20/maze-generation-wilson-s-algorithm http://weblog.jamisbuck.org/2010/12/29/maze-generation-eller-s-algorithm https://en.wikipedia.org/wiki/Maze_generation_algorithm#Cellular_automaton_algorithms http://weblog.jamisbuck.org/2011/1/12/maze-generation-recursive-division-algorithm http://weblog.jamisbuck.org/2011/2/3/maze-generation-sidewinder-algorithm http://weblog.jamisbuck.org/2011/2/1/maze-generation-binary-tree-algorithm https://en.wikipedia.org/wiki/Maze_generation_algorithm https://github.com/theJollySin/mazelib http://www.astrolog.org/labyrnth/algrithm.htm https://mtimmerm.github.io/webStuff/maze.html
from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen('https://sites.google.com/site/klajosw')
bs = BeautifulSoup(html, 'html.parser')
szamol=0
for link in bs.find_all('a'):
if 'href' in link.attrs:
print(szamol, link.attrs['href'])
szamol += 1
if szamol > 10: ## 10 után leállás
break
0 /site/klajosw/home 1 https://www.google.com/url?q=https%3A%2F%2Fmierdekel.hu%2Fblog%2F&sa=D&sntz=1&usg=AFQjCNFFQCtw9yuxT5rEZLBzwOTLfdbWhw 2 http://klajosw.blogspot.hu/ 3 https://www.google.com/url?q=https%3A%2F%2Fsites.google.com%2Fsite%2Fklajosw&sa=D&sntz=1&usg=AFQjCNFFPG6KucVpHGmdzNkgKddsBQyi-A 4 https://www.google.com/url?q=https%3A%2F%2Fnbviewer.jupyter.org%2Fgithub%2Fklajosw%2Fpython&sa=D&sntz=1&usg=AFQjCNGsNXOV3KuW3xm1S1z_1kTGEQoYPQ 5 https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fklajosw&sa=D&sntz=1&usg=AFQjCNFUOAPFijSP8VCDVH8DJ4fkzqZXig 6 https://www.google.com/url?q=https%3A%2F%2Fklajosw.github.io%2Fpython%2F&sa=D&sntz=1&usg=AFQjCNFWzoBPkEumj-ByqaDWKVO2htzfbw 7 https://www.google.com/url?q=https%3A%2F%2Fwww.linkedin.com%2Fin%2Fklajosw%2F&sa=D&sntz=1&usg=AFQjCNGzwLQIyvWQNVHAiFibbgdaOAIupQ 8 https://www.google.com/url?q=https%3A%2F%2Fnotebooks.azure.com%2Fklajosw&sa=D&sntz=1&usg=AFQjCNHpvjrOp2FXFDovcmNEYRC7BGfX2w 9 https://goo.gl/photos/o4p8R18ndmKzJmSu7 10 https://www.google.com/url?q=https%3A%2F%2Fmierdekel.hu%2Fterkep%2Fbubi%2F&sa=D&sntz=1&usg=AFQjCNFattZZlJb7jSUVJIOthZsqTJf_BQ
from bs4 import BeautifulSoup
from urllib.request import urlopen
html = urlopen("https://klajosw.blogspot.com/2020/03/labirintus-generalas-as-megoldas-python.html").read().decode('utf-8')
print(html[1:200]) ## tartalom első 200 karaketrének kiolvasása
print('----------------')
soup = BeautifulSoup(html, features='lxml') ## értelmező
print(soup.h3) ## Harmadik szintű fejlécek kiírása
print('----------------')
print('\nA paragrafusok kiírása', soup.p)## paragrafusok kiírása
print('----------------')
all_href = soup.find_all('a')
print('\nLinkek kiírása 10 db')
for l in all_href[1:9]:
print(l)
!DOCTYPE html> <html class='v2' dir='ltr' lang='hu'> <head> <link href='https://www.blogger.com/static/v1/widgets/3597120983-css_bundle_v2.css' rel='stylesheet' type='text/css'/> <meta content='width ---------------- <h3 class="post-title entry-title" itemprop="name"> Labirintus generálás ás megoldás python </h3> ---------------- A paragrafusok kiírása <p class="description"><span>BI adattárház tervezés, építés, elemzés alapok</span></p> ---------------- Linkek kiírása 10 db <a name="5572427981398595874"></a> <a href="http://weblog.jamisbuck.org/2011/1/3/maze-generation-kruskal-s-algorithm" style='box-sizing: border-box; color: #337ab7; font-family: "helvetica neue", helvetica, arial, sans-serif; font-size: 14px;'></a> <a href="http://weblog.jamisbuck.org/2011/1/3/maze-generation-kruskal-s-algorithm" style='box-sizing: border-box; color: #337ab7; font-family: "helvetica neue", helvetica, arial, sans-serif; font-size: 14px;'></a> <a href="http://weblog.jamisbuck.org/2011/1/3/maze-generation-kruskal-s-algorithm" style='box-sizing: border-box; color: #337ab7; font-family: "helvetica neue", helvetica, arial, sans-serif; font-size: 14px;'></a> <a href="http://weblog.jamisbuck.org/2011/1/3/maze-generation-kruskal-s-algorithm" style='box-sizing: border-box; color: #337ab7; font-family: "helvetica neue", helvetica, arial, sans-serif; font-size: 14px;'>Kruskal féle</a> <a href="http://weblog.jamisbuck.org/2011/1/10/maze-generation-prim-s-algorithm" style='box-sizing: border-box; color: #337ab7; font-family: "helvetica neue", helvetica, arial, sans-serif; font-size: 14px;'>Prim féle</a> <a href="http://weblog.jamisbuck.org/2010/12/27/maze-generation-recursive-backtracking" style='box-sizing: border-box; color: #337ab7; font-family: "helvetica neue", helvetica, arial, sans-serif; font-size: 14px;'>rekurzív Backtracker</a> <a href="http://weblog.jamisbuck.org/2011/1/17/maze-generation-aldous-broder-algorithm" style='box-sizing: border-box; color: #337ab7; font-family: "helvetica neue", helvetica, arial, sans-serif; font-size: 14px;'>Aldous-Broder</a>
from bs4 import BeautifulSoup
from urllib.request import urlopen
from urllib.request import urlretrieve
import re
import os
html = urlopen("https://klajosw.blogspot.com/2020/03/labirintus-generalas-as-megoldas-python.html").read().decode('utf-8')
print(html[1:200])
soup = BeautifulSoup(html, features='lxml')
month = soup.find_all('li')
print('----------------')
print('\nA fejezetek\n')
for d in month[1:10]:
print(d.get_text())
print('----------------')
print('\nA képek keresése\n')
img_links = soup.find_all("img", {"src": re.compile('.*?\.jpg')})
for link in img_links:
print(link['src'])
print('----------------')
print('\nA kép letőltése IMG könyvtárba\n')
os.makedirs('./img/', exist_ok=True) ## img könyvtár létrehozása
IMAGE_URL = 'https://1.bp.blogspot.com/-MkX7e5_jAU8/XqMnuEMm_ZI/AAAAAAAAclc/LRyVXVmwBPYy1qmQ8XnERnYUCswRv5bxQCLcBGAsYHQ/s400/kl_ms_00.jpg'
urlretrieve(IMAGE_URL, './img/image1.png')
print('----------------')
print('\nBelső linkek\n')
inter_links = soup.find_all('a', {'href': re.compile('https://klajosw.blogspot.com/.*')})
for link in inter_links[0:5]: ## csak 6 darab
print(link['href'])
print('----------------')
print('\nKülső linkek\n')
outer_links = soup.find_all('a', {'href': re.compile('http://weblog.jamisbuck.org/.*')})
for link in outer_links[1:5]: ## csak 6 darab
print(link['href'])
!DOCTYPE html> <html class='v2' dir='ltr' lang='hu'> <head> <link href='https://www.blogger.com/static/v1/widgets/3597120983-css_bundle_v2.css' rel='stylesheet' type='text/css'/> <meta content='width ---------------- A fejezetek Prim féle rekurzív Backtracker Aldous-Broder növekvő fa Hunt és ölő Wilson Eller féle Sejtautomata (Easy) Rekurzív osztály (nagyon könnyű) ---------------- A képek keresése https://1.bp.blogspot.com/-MkX7e5_jAU8/XqMnuEMm_ZI/AAAAAAAAclc/LRyVXVmwBPYy1qmQ8XnERnYUCswRv5bxQCLcBGAsYHQ/s400/kl_ms_00.jpg ---------------- A kép letőltése IMG könyvtárba ---------------- Belső linkek https://klajosw.blogspot.com/ https://klajosw.blogspot.com/2020/03/labirintus-generalas-as-megoldas-python.html https://klajosw.blogspot.com/2020/04/ms-oktatasok.html https://klajosw.blogspot.com/2020/03/nodejs.html https://klajosw.blogspot.com/ ---------------- Külső linkek http://weblog.jamisbuck.org/2011/1/3/maze-generation-kruskal-s-algorithm http://weblog.jamisbuck.org/2011/1/3/maze-generation-kruskal-s-algorithm http://weblog.jamisbuck.org/2011/1/3/maze-generation-kruskal-s-algorithm http://weblog.jamisbuck.org/2011/1/10/maze-generation-prim-s-algorithm
## Képek tömeges letőltése
from bs4 import BeautifulSoup
import requests
URL = 'http://www.nationalgeographic.com.cn/animals/' #"https://www.nationalgeographic.com/animals/"
html = requests.get(URL).text
soup = BeautifulSoup(html, 'lxml')
img_ul = soup.find_all('ul', {"class": "img_list"})
for ul in img_ul:
imgs = ul.find_all('img')
for img in imgs:
url = img['src']
r = requests.get(url, stream=True)
image_name = url.split('/')[-1]
with open('./img/%s' % image_name, 'wb') as f:
for chunk in r.iter_content(chunk_size=128):
f.write(chunk)
print('Mentés %s' % image_name)
Mentés 20200526103926847.jpg Mentés 20200525011707342.jpg Mentés 20200522051045878.jpg Mentés 20200521043300142.jpg Mentés 20200519014940212.jpg Mentés 20200519103501801.jpg
import requests
import webbrowser
## GET hívás
param = {"param_neve": "param_erteke"}
r = requests.get('https://klajosw.blogspot.com/2020/03/labirintus-generalas-as-megoldas-python.html', params=param)
print(r.url)
webbrowser.open(r.url)
print('----------------')
## POST hívás
data = {'firstname': 'Lajos', 'lastname': 'Kecskeméti'}
r = requests.post('http://mierdekel.hu/login.php', data=data)
print(r.text)
https://klajosw.blogspot.com/2020/03/labirintus-generalas-as-megoldas-python.html?param_neve=param_erteke ---------------- Hello there, !
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
#html = urlopen('http://hu.wikipedia.org')
html = urlopen("http://hu.wikipedia.org").read().decode('utf-8')
bs = BeautifulSoup(html, 'html.parser')
szamol=0
for link in bs.find('div', {'id':'content'}).find_all(
'a', href=re.compile('^(/wiki/)((?!:).)*$')):
if 'href' in link.attrs:
print(szamol, link.attrs['href'])
szamol += 1
if szamol > 10: ## 10 után leállás
break
0 /wiki/Enciklop%C3%A9dia 1 /wiki/Magyar_Wikip%C3%A9dia 2 /wiki/2017-es_Formula%E2%80%931_vil%C3%A1gbajnoks%C3%A1g 3 /wiki/Formula%E2%80%931 4 /wiki/Nemzetk%C3%B6zi_Automobil_Sz%C3%B6vets%C3%A9g 5 /wiki/Formula%E2%80%931_ausztr%C3%A1l_nagyd%C3%ADj 6 /wiki/Melbourne 7 /wiki/Melbourne_Grand_Prix_Circuit 8 /wiki/Formula%E2%80%931_abu-dzabi_nagyd%C3%ADj 9 /wiki/Yas_Marina_Circuit 10 /wiki/Formula%E2%80%931-es_egy%C3%A9ni_vil%C3%A1gbajnokok_list%C3%A1ja
from urllib.request import urlopen
from bs4 import BeautifulSoup
import datetime
import random
import re
random.seed(datetime.datetime.now())
szamol=0
def getLinks(articleUrl):
html = urlopen('http://hu.wikipedia.org{}'.format(articleUrl))
bs = BeautifulSoup(html, 'html.parser')
return bs.find('div', {'id':'bodyContent'}).find_all('a', href=re.compile('^(/wiki/)((?!:).)*$'))
links = getLinks('/wiki/Kevin_Bacon')
while len(links) > 0:
newArticle = links[random.randint(0, len(links)-1)].attrs['href']
print(szamol, newArticle)
links = getLinks(newArticle)
szamol += 1
if szamol > 9: ## 10 után leállás
break
0 /wiki/Kevin_Costner 1 /wiki/1992 2 /wiki/%C3%89szak-atlanti_Szerz%C5%91d%C3%A9s_Szervezete 3 /wiki/Belgium 4 /wiki/Hollandia 5 /wiki/N%C3%A9met-r%C3%B3mai_Birodalom 6 /wiki/I._Ott%C3%B3_n%C3%A9met-r%C3%B3mai_cs%C3%A1sz%C3%A1r 7 /wiki/949 8 /wiki/950-es_%C3%A9vek 9 /wiki/990-es_%C3%A9vek
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
pages = set()
szamol=0
def getLinks(pageUrl):
global pages, szamol
html = urlopen('http://hu.wikipedia.org{}'.format(pageUrl))
bs = BeautifulSoup(html, 'html.parser')
for link in bs.find_all('a', href=re.compile('^(/wiki/)')):
if 'href' in link.attrs:
if link.attrs['href'] not in pages:
#Wúj oldalak számlálása
newPage = link.attrs['href']
print(szamol, newPage)
pages.add(newPage)
szamol += 1
if szamol > 9: ## 10 után leállás
break
getLinks(newPage)
getLinks('')
0 /wiki/Wikip%C3%A9dia:Jel%C3%B6lt_lapv%C3%A1ltozatok 1 /wiki/Wikip%C3%A9dia:WP 2 /wiki/WP:WP 3 /wiki/WP:R%C3%96V 4 /wiki/Wikip%C3%A9dia:N%C3%A9vt%C3%A9r#Wikipédia-névtér 5 /wiki/F%C3%A1jl:Walnut.png 6 /wiki/F%C3%A1jl:Commons-logo.svg 7 /wiki/Szerkeszt%C5%91:Be..anyone 8 /wiki/Speci%C3%A1lis:Mi_hivatkozik_erre/F%C3%A1jl:Walnut.png 9 /wiki/WP:N%C3%89VT%C3%89R 10 /wiki/WP:1 11 /wiki/Wikip%C3%A9dia:Az_els%C5%91_l%C3%A9p%C3%A9sek 12 /wiki/WP:100K 13 /wiki/WP:JEL 14 /wiki/Wikip%C3%A9dia:%C3%9Cdv%C3%B6zl%C3%BCnk,_l%C3%A1togat%C3%B3!
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
pages = set()
szamol=0
def getLinks(pageUrl):
global pages, szamol
html = urlopen('http://hu.wikipedia.org{}'.format(pageUrl))
bs = BeautifulSoup(html, 'html.parser')
try:
print(bs.h1.get_text())
print(bs.find(id ='mw-content-text').find_all('p')[0])
print(bs.find(id='ca-edit').find('span').find('a').attrs['href'])
except AttributeError:
print('Valami hiba van!!! Folytassuk azért.')
for link in bs.find_all('a', href=re.compile('^(/wiki/)')):
if 'href' in link.attrs:
if link.attrs['href'] not in pages:
## új lap link felismerése
newPage = link.attrs['href']
print('-'*20)
print(newPage)
pages.add(newPage)
szamol += 1
if szamol > 7: ## 10 után leállás
break
getLinks(newPage)
getLinks('')
Kezdőlap <p><i>Ezt az <a href="/wiki/Enciklop%C3%A9dia" title="Enciklopédia">enciklopédiát</a> az olvasói <a href="/wiki/Wikip%C3%A9dia:Az_els%C5%91_l%C3%A9p%C3%A9sek" title="Wikipédia:Az első lépések">szerkesztik</a>.</i><br/>A <a href="/wiki/Magyar_Wikip%C3%A9dia" title="Magyar Wikipédia">magyar</a> változatnak <a href="/wiki/Wikip%C3%A9dia:Statisztik%C3%A1k" title="Wikipédia:Statisztikák">471 224</a> <a href="/wiki/Wikip%C3%A9dia:Sz%C3%B3cikk" title="Wikipédia:Szócikk">szócikke</a> van, <span style="white-space:nowrap;">ebből <a href="/wiki/Wikip%C3%A9dia:Kiemelt_sz%C3%B3cikkek_list%C3%A1ja" title="Wikipédia:Kiemelt szócikkek listája">1021</a> <a href="/wiki/Wikip%C3%A9dia:Kiemelt_sz%C3%B3cikk" title="Wikipédia:Kiemelt szócikk">kiemelt</a>.</span> </p> Valami hiba van!!! Folytassuk azért. -------------------- /wiki/Wikip%C3%A9dia:Jel%C3%B6lt_lapv%C3%A1ltozatok Wikipédia:Jelölt lapváltozatok <p>A <a href="/wiki/MediaWiki" title="MediaWiki">MediaWiki</a> <a class="extiw" href="https://www.mediawiki.org/wiki/Extension:FlaggedRevs/hu" title="mw:Extension:FlaggedRevs/hu">FlaggedRevs</a> (jelölt lapváltozatok) kiterjesztése segítségével a Wikipédia előtt új dimenzió nyílik: ezután meg lehet jelölni egy-egy szócikknek a közösség által ellenőrzött változatait, és az olvasónak jelezni, hogy vannak ilyen változatok, esetleg eleve azokat mutatni meg neki. Az egyes Wikipédiák (és Wikikönyvek, Wikiszótárak stb.) közösségei a közeljövőben eldönthetik, akarják-e használni ezt a kiterjesztést, és ha igen, pontosan milyen beállításokkal. A magyar Wikipédián a <a href="/wiki/Wikip%C3%A9dia:Szavaz%C3%A1s/Jel%C3%B6lt_lapv%C3%A1ltozatok_bevezet%C3%A9se" title="Wikipédia:Szavazás/Jelölt lapváltozatok bevezetése">szavazást</a> követően a fejlesztők 2008. november 17-én aktiválták az <a href="/wiki/Wikip%C3%A9dia:Jel%C3%B6lt_lapv%C3%A1ltozatok/konfigur%C3%A1ci%C3%B3" title="Wikipédia:Jelölt lapváltozatok/konfiguráció">itt látható</a> beállításokkal. </p> Valami hiba van!!! Folytassuk azért. -------------------- /wiki/Wikip%C3%A9dia:WP Wikipédia:WP <p>Ez a lap tartalmazza a <a href="/wiki/Wikip%C3%A9dia:N%C3%A9vt%C3%A9r#Wikipédia-névtér" title="Wikipédia:Névtér">Wikipédia-névtérben</a> szereplő lapok rövidített neveit, melyekkel egyszerűbben lehet rájuk hivatkozni. </p> Valami hiba van!!! Folytassuk azért. -------------------- /wiki/WP:WP Wikipédia:WP <p>Ez a lap tartalmazza a <a href="/wiki/Wikip%C3%A9dia:N%C3%A9vt%C3%A9r#Wikipédia-névtér" title="Wikipédia:Névtér">Wikipédia-névtérben</a> szereplő lapok rövidített neveit, melyekkel egyszerűbben lehet rájuk hivatkozni. </p> Valami hiba van!!! Folytassuk azért. -------------------- /wiki/WP:R%C3%96V Wikipédia:WP <p>Ez a lap tartalmazza a <a href="/wiki/Wikip%C3%A9dia:N%C3%A9vt%C3%A9r#Wikipédia-névtér" title="Wikipédia:Névtér">Wikipédia-névtérben</a> szereplő lapok rövidített neveit, melyekkel egyszerűbben lehet rájuk hivatkozni. </p> Valami hiba van!!! Folytassuk azért. -------------------- /wiki/Wikip%C3%A9dia:N%C3%A9vt%C3%A9r#Wikipédia-névtér Wikipédia:Névtér <p>A Wikipédia minden egyes lapját, feltöltött kép- és hangállományát és minden regisztrált szerkesztőjét (programozási szakkifejezéssel: minden <i>objektumát</i>) a nevével azonosíthatjuk. Ha azonban egy nevet csak egyszer használhatnánk, az konfliktusokhoz vezetne. Tegyük fel például, hogy valaki egy keresztnévvel szeretne regisztrálni. Ezt nem tehetné meg, mert a keresztnevekről vannak szócikkeink. Mi történne azonban, ha valaki azelőtt regisztrálna Ferenc vagy Júlia néven, hogy a megfelelő szócikk elkészült? Akkor vagy nem lehetne már megírni a szócikket, vagy előbb át kellene nevezni a szerkesztőt, aminek ő nem biztos, hogy örülne. Sőt: semmilyen néven nem lehetne regisztrálni, amiről egyáltalán elképzelhető, hogy valaha is szócikk lesz. Például <a href="/wiki/Szerkeszt%C5%91:GumiBot" title="Szerkesztő:GumiBot">Szerkesztő:GumiBot</a> sem lehetne, mert valaki talán majd a <a class="new" href="/w/index.php?title=Gumibot&action=edit&redlink=1" title="Gumibot (a lap nem létezik)">gumibotról</a> akar cikket írni. Nem is beszélve arról a káoszról, amit az összes különböző nyelvű Wikipédiában használható szerkesztőnevek okoznának. Az olvasók meg lépten-nyomon furcsa, nem nekik szánt tartalmakba botlanának a kereső használatával. </p> Valami hiba van!!! Folytassuk azért. -------------------- /wiki/F%C3%A1jl:Walnut.png Fájl:Walnut.png <p><a class="internal" href="//upload.wikimedia.org/wikipedia/commons/f/f6/Walnut.png" title="Walnut.png">Walnut.png</a> <span class="fileInfo">(192 × 192 képpont, fájlméret: 46 KB, MIME-típus: <span class="mime-type">image/png</span>)</span> </p> Valami hiba van!!! Folytassuk azért. -------------------- /wiki/F%C3%A1jl:Commons-logo.svg Fájl:Commons-logo.svg <p><a class="internal" href="//upload.wikimedia.org/wikipedia/commons/4/4a/Commons-logo.svg" title="Commons-logo.svg">Eredeti fájl</a> <span class="fileInfo">(SVG fájl, névlegesen 1 024 × 1 376 képpont, fájlméret: 932 bytes)</span> </p> Valami hiba van!!! Folytassuk azért. -------------------- /wiki/Szerkeszt%C5%91:Be..anyone -------------------- /wiki/Speci%C3%A1lis:Mi_hivatkozik_erre/F%C3%A1jl:Walnut.png -------------------- /wiki/WP:N%C3%89VT%C3%89R -------------------- /wiki/WP:1 -------------------- /wiki/Wikip%C3%A9dia:Az_els%C5%91_l%C3%A9p%C3%A9sek -------------------- /wiki/WP:100K -------------------- /wiki/WP:JEL -------------------- /wiki/Wikip%C3%A9dia:%C3%9Cdv%C3%B6zl%C3%BCnk,_l%C3%A1togat%C3%B3!
from urllib.request import urlopen
from urllib.parse import urlparse
from bs4 import BeautifulSoup
import re
import datetime
import random
pages = set()
szamol=0
random.seed(datetime.datetime.now())
## Beolvassa az oldalon található összes belső link listáját
def getInternalLinks(bs, includeUrl):
includeUrl = '{}://{}'.format(urlparse(includeUrl).scheme, urlparse(includeUrl).netloc)
internalLinks = []
#Finds all links that begin with a "/"
for link in bs.find_all('a', href=re.compile('^(/|.*'+includeUrl+')')):
if link.attrs['href'] is not None:
if link.attrs['href'] not in internalLinks: ## új belső link
print('belső link : {}'.format(internalLinks))
if(link.attrs['href'].startswith('/')):
internalLinks.append(includeUrl+link.attrs['href'])
else:
internalLinks.append(link.attrs['href'])
print('belső link : {}'.format(internalLinks))
return internalLinks
## Beolvassa az oldalon található összes külső link listáját
def getExternalLinks(bs, excludeUrl):
externalLinks = []
##összes link keresése
##nem tartalmaz külső URL-t
for link in bs.find_all('a', href=re.compile('^(http|www)((?!'+excludeUrl+').)*$')):
if link.attrs['href'] is not None:
if link.attrs['href'] not in externalLinks: ## új külső link
externalLinks.append(link.attrs['href'])
return externalLinks
def getRandomExternalLink(startingPage):
html = urlopen(startingPage)
bs = BeautifulSoup(html, 'html.parser')
externalLinks = getExternalLinks(bs, urlparse(startingPage).netloc)
if len(externalLinks) == 0:
print('Nincs külső link, nézze meg a webhelyen is')
domain = '{}://{}'.format(urlparse(startingPage).scheme, urlparse(startingPage).netloc)
internalLinks = getInternalLinks(bs, domain)
return getRandomExternalLink(internalLinks[random.randint(0,
len(internalLinks)-1)])
else:
return externalLinks[random.randint(0, len(externalLinks)-1)]
def followExternalOnly(startingSite):
global szamol
externalLink = getRandomExternalLink(startingSite)
print('Véletlen külső link : {}'.format(externalLink))
print('Véletlen belső link : {}'.format(externalLink))
szamol += 1
if szamol < 2: ## 10 után leállás
followExternalOnly(externalLink)
followExternalOnly('https://sites.google.com/site/klajosw')
#followExternalOnly('https://mierdekel.hu/blog/2015/12/')
#followExternalOnly('https://klajosw.blogspot.com/')
Véletlen külső link : https://www.google.com/url?q=https%3A%2F%2Fmierdekel.hu%2Fblog%2F&sa=D&sntz=1&usg=AFQjCNFFQCtw9yuxT5rEZLBzwOTLfdbWhw Véletlen belső link : https://www.google.com/url?q=https%3A%2F%2Fmierdekel.hu%2Fblog%2F&sa=D&sntz=1&usg=AFQjCNFFQCtw9yuxT5rEZLBzwOTLfdbWhw Nincs külső link, nézze meg a webhelyen is
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-10-eb4abd8f7205> in <module> 60 61 ---> 62 followExternalOnly('https://sites.google.com/site/klajosw') 63 #followExternalOnly('https://mierdekel.hu/blog/2015/12/') 64 #followExternalOnly('https://klajosw.blogspot.com/') <ipython-input-10-eb4abd8f7205> in followExternalOnly(startingSite) 57 szamol += 1 58 if szamol < 2: ## 10 után leállás ---> 59 followExternalOnly(externalLink) 60 61 <ipython-input-10-eb4abd8f7205> in followExternalOnly(startingSite) 52 def followExternalOnly(startingSite): 53 global szamol ---> 54 externalLink = getRandomExternalLink(startingSite) 55 print('Véletlen külső link : {}'.format(externalLink)) 56 print('Véletlen belső link : {}'.format(externalLink)) <ipython-input-10-eb4abd8f7205> in getRandomExternalLink(startingPage) 46 internalLinks = getInternalLinks(bs, domain) 47 return getRandomExternalLink(internalLinks[random.randint(0, ---> 48 len(internalLinks)-1)]) 49 else: 50 return externalLinks[random.randint(0, len(externalLinks)-1)] ~\Anaconda3\lib\random.py in randint(self, a, b) 220 """ 221 --> 222 return self.randrange(a, b+1) 223 224 def _randbelow(self, n, int=int, maxsize=1<<BPF, type=type, ~\Anaconda3\lib\random.py in randrange(self, start, stop, step, _int) 198 return istart + self._randbelow(width) 199 if step == 1: --> 200 raise ValueError("empty range for randrange() (%d,%d, %d)" % (istart, istop, width)) 201 202 # Non-unit step argument supplied. ValueError: empty range for randrange() (0,0, 0)
from urllib.request import urlopen
from urllib.parse import urlparse
from bs4 import BeautifulSoup
import re
import datetime
import random
# Collects a list of all external URLs found on the site
allExtLinks = set()
allIntLinks = set()
szamol=0
pages = set()
random.seed(datetime.datetime.now())
#Retrieves a list of all Internal links found on a page
def getInternalLinks(bs, includeUrl):
global szamol
includeUrl = '{}://{}'.format(urlparse(includeUrl).scheme, urlparse(includeUrl).netloc)
internalLinks = []
#Finds all links that begin with a "/"
for link in bs.find_all('a', href=re.compile('^(/|.*'+includeUrl+')')):
if link.attrs['href'] is not None:
if link.attrs['href'] not in internalLinks:
if(link.attrs['href'].startswith('/')):
internalLinks.append(includeUrl+link.attrs['href'])
else:
internalLinks.append(link.attrs['href'])
# print('Belső ', szamol, link.attrs['href'])
szamol += 1
if szamol > 200: ## 10 után leállás
break
return internalLinks
#Retrieves a list of all external links found on a page
def getExternalLinks(bs, excludeUrl):
global szamol
externalLinks = []
#Finds all links that start with "http" that do
#not contain the current URL
for link in bs.find_all('a', href=re.compile('^(http|www)((?!'+excludeUrl+').)*$')):
if link.attrs['href'] is not None:
if link.attrs['href'] not in externalLinks:
externalLinks.append(link.attrs['href'])
# print('Külső ', szamol, link.attrs['href'])
szamol += 1
if szamol > 200: ## 10 után leállás
break
return externalLinks
def getAllExternalLinks(siteUrl):
html = urlopen(siteUrl)
domain = '{}://{}'.format(urlparse(siteUrl).scheme,
urlparse(siteUrl).netloc)
bs = BeautifulSoup(html, 'html.parser')
internalLinks = getInternalLinks(bs, domain)
externalLinks = getExternalLinks(bs, domain)
for link in externalLinks:
if link not in allExtLinks:
allExtLinks.add(link)
print('Külső link -> ', link)
for link in internalLinks:
if link not in allIntLinks:
allIntLinks.add(link)
print('Belső link -> ', link)
getAllExternalLinks(link)
allIntLinks.add('https://mierdekel.hu/blog')
getAllExternalLinks('''https://mierdekel.hu/blog''')
Külső link -> https://mierdekel.hu/blog/ Külső link -> https://mierdekel.hu/blog/android/ Külső link -> https://mierdekel.hu/blog/blogok/ Külső link -> https://mierdekel.hu/blog/gdpr/ Külső link -> https://klajosw.blogspot.com Külső link -> https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fklajosw&sa=D&sntz=1&usg=AFQjCNFUOAPFijSP8VCDVH8DJ4fkzqZXig Külső link -> https://www.google.com/url?q=https%3A%2F%2Fwww.linkedin.com%2Fin%2Fklajosw%2F&sa=D&sntz=1&usg=AFQjCNGzwLQIyvWQNVHAiFibbgdaOAIupQ Külső link -> https://sites.google.com/site/klajosw Külső link -> https://mierdekel.hu/blog/2018/08/ Külső link -> https://mierdekel.hu/oktatas Külső link -> https://mierdekel.hu/igeny Külső link -> https://mierdekel.hu/alap Külső link -> http://mierdekel.hu/kozlekedes Külső link -> https://mierdekel.hu/abra/d3/ Külső link -> https://mierdekel.hu/abra/d3/index1.html Külső link -> https://mierdekel.hu/abra/d3/index3.html Külső link -> https://mierdekel.hu/abra/d3/index4.html Külső link -> https://mierdekel.hu/abra/vis/ Külső link -> https://mierdekel.hu/abra/vis/animacio.html Külső link -> https://mierdekel.hu/abra/vis/beallitas.html Külső link -> https://mierdekel.hu/abra/vis/szerkesztes.html Külső link -> https://mierdekel.hu/abra/vis/szerkesztes2.html Külső link -> https://mierdekel.hu/abra/vis/szerkesztes3.html Külső link -> https://mierdekel.hu/abra/vis/nodok.html Külső link -> https://mierdekel.hu/abra/vis/ment_betolt.html Külső link -> https://mierdekel.hu/abra/vis/ikonok.html Külső link -> https://mierdekel.hu/abra/vis/ido.html Külső link -> https://mierdekel.hu/abra/vis/ido2.html Külső link -> https://mierdekel.hu/abra/vis/hierachiak.html Külső link -> https://mierdekel.hu/blog/2018/08/12/android-alapok/ Külső link -> https://mierdekel.hu/blog/2018/07/03/adatmodellezes-alapjai-powerdesignerrel/ Külső link -> https://mierdekel.hu/blog/2018/07/03/adat-modellezes-sqldeveloperrel/ Külső link -> https://mierdekel.hu/blog/2015/12/07/oracle-sql-halado-mintak/ Külső link -> https://mierdekel.hu/blog/2015/12/01/szoftver-fejlesztes-mint-folyamat/ Külső link -> https://mierdekel.hu/blog/2018/07/ Külső link -> https://mierdekel.hu/blog/2015/12/ Külső link -> https://mierdekel.hu/blog/2015/11/ Külső link -> https://mierdekel.hu/blog/2015/10/ Külső link -> https://mierdekel.hu/blog/2015/09/ Külső link -> https://mierdekel.hu/blog/2015/08/ Külső link -> https://mierdekel.hu/blog/2015/07/ Külső link -> https://mierdekel.hu/blog/2015/06/ Külső link -> https://mierdekel.hu/blog/2015/05/ Külső link -> https://mierdekel.hu/blog/2015/04/ Külső link -> https://mierdekel.hu/blog/2015/03/ Külső link -> https://mierdekel.hu/blog/2015/02/ Külső link -> https://mierdekel.hu/blog/2015/01/ Külső link -> https://mierdekel.hu/blog/2014/12/ Külső link -> https://mierdekel.hu/blog/2014/11/ Külső link -> https://mierdekel.hu/blog/2014/10/ Külső link -> https://mierdekel.hu/blog/2014/09/ Külső link -> https://mierdekel.hu/blog/2014/08/ Külső link -> https://mierdekel.hu/blog/2014/07/ Külső link -> https://mierdekel.hu/blog/2014/05/ Külső link -> https://mierdekel.hu/blog/2014/03/ Külső link -> https://mierdekel.hu/blog/2014/02/ Külső link -> https://mierdekel.hu/blog/2014/01/ Külső link -> https://mierdekel.hu/blog/category/egyeb/ Külső link -> https://mierdekel.hu/blog/category/felmero/ Külső link -> https://mierdekel.hu/blog/category/hoby/ Külső link -> https://mierdekel.hu/blog/category/it/ Külső link -> https://mierdekel.hu/blog/category/mas/ Külső link -> https://mierdekel.hu/blog/category/oktatas-2/ Külső link -> https://mierdekel.hu/blog/category/stat/ Külső link -> https://mierdekel.hu/blog/category/szemelyiseg/ Külső link -> https://mierdekel.hu/blog/wp-login.php Külső link -> https://mierdekel.hu/blog/feed/ Külső link -> https://mierdekel.hu/blog/comments/feed/ Külső link -> https://hu.wordpress.org/ Külső link -> https://mierdekel.hu/blog/gdpr Belső link -> https://mierdekel.hu/blog/ Belső link -> https://mierdekel.hu/blog/android/ Belső link -> https://mierdekel.hu/blog/blogok/ Belső link -> https://mierdekel.hu/blog/gdpr/ Belső link -> https://mierdekel.hu/blog/2018/08/ Belső link -> https://mierdekel.hu/oktatas Külső link -> https://mierdekel.hu/oktatas/ Belső link -> https://mierdekel.hu/oktatas/ Belső link -> https://mierdekel.hu/igeny Belső link -> https://mierdekel.hu/alap Belső link -> https://mierdekel.hu/alap/ Belső link -> https://mierdekel.hu/abra/d3/ Belső link -> https://mierdekel.hu/abra/d3/index1.html Belső link -> https://mierdekel.hu/abra/d3/index3.html Belső link -> https://mierdekel.hu/abra/d3/index4.html Belső link -> https://mierdekel.hu/abra/vis/ Belső link -> https://mierdekel.hu/abra/vis/animacio.html Belső link -> https://mierdekel.hu/abra/vis/beallitas.html Belső link -> https://mierdekel.hu/abra/vis/szerkesztes.html Belső link -> https://mierdekel.hu/abra/vis/szerkesztes2.html Belső link -> https://mierdekel.hu/abra/vis/szerkesztes3.html Belső link -> https://mierdekel.hu/abra/vis/nodok.html Belső link -> https://mierdekel.hu/abra/vis/ment_betolt.html Belső link -> https://mierdekel.hu/abra/vis/ikonok.html Belső link -> https://mierdekel.hu/abra/vis/ido.html Belső link -> https://mierdekel.hu/abra/vis/ido2.html Belső link -> https://mierdekel.hu/abra/vis/hierachiak.html Belső link -> https://mierdekel.hu/blog/2018/08/12/android-alapok/ Belső link -> https://mierdekel.hu/blog/2018/07/03/adatmodellezes-alapjai-powerdesignerrel/ Belső link -> https://mierdekel.hu/blog/2018/07/03/adat-modellezes-sqldeveloperrel/ Belső link -> https://mierdekel.hu/blog/2015/12/07/oracle-sql-halado-mintak/ Belső link -> https://mierdekel.hu/blog/2015/12/01/szoftver-fejlesztes-mint-folyamat/ Belső link -> https://mierdekel.hu/blog/2018/07/ Belső link -> https://mierdekel.hu/blog/2015/12/ Belső link -> https://mierdekel.hu/blog/2015/11/ Belső link -> https://mierdekel.hu/blog/2015/10/ Belső link -> https://mierdekel.hu/blog/2015/09/ Belső link -> https://mierdekel.hu/blog/2015/08/ Belső link -> https://mierdekel.hu/blog/2015/07/ Belső link -> https://mierdekel.hu/blog/2015/06/ Belső link -> https://mierdekel.hu/blog/2015/05/ Belső link -> https://mierdekel.hu/blog/2015/04/ Belső link -> https://mierdekel.hu/blog/2015/03/ Belső link -> https://mierdekel.hu/blog/2015/02/ Belső link -> https://mierdekel.hu/blog/2015/01/ Belső link -> https://mierdekel.hu/blog/2014/12/ Belső link -> https://mierdekel.hu/blog/2014/11/ Belső link -> https://mierdekel.hu/blog/2014/10/ Belső link -> https://mierdekel.hu/blog/2014/09/ Belső link -> https://mierdekel.hu/blog/2014/08/ Belső link -> https://mierdekel.hu/blog/2014/07/ Belső link -> https://mierdekel.hu/blog/2014/05/ Belső link -> https://mierdekel.hu/blog/2014/03/ Belső link -> https://mierdekel.hu/blog/2014/02/ Belső link -> https://mierdekel.hu/blog/2014/01/ Belső link -> https://mierdekel.hu/blog/category/egyeb/ Belső link -> https://mierdekel.hu/blog/category/felmero/ Belső link -> https://mierdekel.hu/blog/category/hoby/ Belső link -> https://mierdekel.hu/blog/category/it/ Belső link -> https://mierdekel.hu/blog/category/mas/ Belső link -> https://mierdekel.hu/blog/category/oktatas-2/ Belső link -> https://mierdekel.hu/blog/category/stat/ Belső link -> https://mierdekel.hu/blog/category/szemelyiseg/ Belső link -> https://mierdekel.hu/blog/wp-login.php Belső link -> https://mierdekel.hu/blog/wp-login.php?action=lostpassword Belső link -> https://mierdekel.hu/blog/feed/ Belső link -> https://mierdekel.hu/blog/comments/feed/ Belső link -> https://mierdekel.hu/blog/gdpr
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
szamol=0
html = urlopen('https://klajosw.blogspot.com')
bs = BeautifulSoup(html, 'html.parser')
images = bs.find_all('img')
for image in images:
## print(image)
print(szamol, image['src'])
szamol += 1
if szamol > 9: ## 10 után leállás
break
0 https://1.bp.blogspot.com/-MkX7e5_jAU8/XqMnuEMm_ZI/AAAAAAAAclc/LRyVXVmwBPYy1qmQ8XnERnYUCswRv5bxQCLcBGAsYHQ/s400/kl_ms_00.jpg 1 https://1.bp.blogspot.com/-o27bHitOJZg/XqMnuY5m_rI/AAAAAAAAclg/O5SIiPMoVHo6iM6Ozl1u2qwNIVPx_B7ZACLcBGAsYHQ/s400/kl_ms_01.jpg 2 https://1.bp.blogspot.com/-ChXAP_nmkV0/XqMnuFW5QAI/AAAAAAAAclY/p3i5K5v5eM0jV4XWKJPKPXrmW68FQd_KgCLcBGAsYHQ/s400/kl_ms_02.jpg 3 https://1.bp.blogspot.com/-LKS3m2g0tk0/XqMnuxxUQdI/AAAAAAAAclk/9FF9dzOPfRci9vuRgKu2FFOjxg13cihLACLcBGAsYHQ/s400/kl_ms_03.jpg 4 https://1.bp.blogspot.com/-6gog84olmtw/XqMnvflNq8I/AAAAAAAAclo/cpj6VTfGiGwWfM7OThC25Ph_3DWfLBYGACLcBGAsYHQ/s400/kl_ms_04.jpg 5 https://1.bp.blogspot.com/-6nysr7al_J0/XqMnv7PNFUI/AAAAAAAAcls/L2MsZxtLQ9cTrCa6gERVeTyRchi3Oi9hACLcBGAsYHQ/s400/kl_ms_05.jpg 6 https://resources.blogblog.com/img/icon18_edit_allbkg.gif 7 https://resources.blogblog.com/img/icon18_edit_allbkg.gif 8 https://resources.blogblog.com/img/icon18_edit_allbkg.gif 9 https://resources.blogblog.com/img/icon18_edit_allbkg.gif
import os
from urllib.request import urlretrieve
from urllib.request import urlopen
from bs4 import BeautifulSoup
def getAbsoluteURL(baseUrl, source):
if source.startswith('http://www.'):
url = 'http://{}'.format(source[11:])
elif source.startswith('http://'):
url = source
elif source.startswith('www.'):
url = source[4:]
url = 'http://{}'.format(source)
else:
url = '{}/{}'.format(baseUrl, source)
if baseUrl not in url:
return None
url = url.replace('/https://', 'https://')
url = url.replace('/http://', 'http://')
return url
def getDownloadPath(baseUrl, absoluteUrl, downloadDirectory):
path = absoluteUrl.replace('www.', '')
path = path.replace(baseUrl, '')
path = path.replace('https://resources.blogblog.com', '')
path = path.replace('http://resources.blogblog.com', '')
konyvtar = path.split("/")
path = "/".join(konyvtar[-2:])
path = downloadDirectory+"/"+path
directory = os.path.dirname(path)
if not os.path.exists(directory):
os.makedirs(directory)
return path
##----
## Paraméterek megadása
downloadDirectory = 'downloaded' ## Letöltési könyvtár neve
baseUrl = 'https://klajosw.blogspot.com' ## forrás web lap címe ///http://pythonscraping.com
html = urlopen(baseUrl)
bs = BeautifulSoup(html, 'html.parser')
downloadList = bs.find_all('img') ## képfilek keresése
#downloadList = bs.findAll(src=True)
for download in downloadList:
fileUrl = getAbsoluteURL(baseUrl, download['src'])
if fileUrl is not None:
print('p1', getDownloadPath(baseUrl, fileUrl, downloadDirectory))
fileUrl = fileUrl.replace(baseUrl, '')
print('p2',fileUrl)
urlretrieve(fileUrl, getDownloadPath(baseUrl, fileUrl, downloadDirectory))
p1 downloaded/s320/KL_karacsonyi_szofelho.png p2 https://1.bp.blogspot.com/-LvQsQz0kOTU/XfyOEdINRWI/AAAAAAAAXxc/k1cZdGkTJnwYvkABO3oMxH10kKwx2edPwCLcBGAsYHQ/s320/KL_karacsonyi_szofelho.png p1 downloaded/s320/kari_fa_word_cloud_szines.png p2 https://1.bp.blogspot.com/-H62-mz2F1DY/Xfyc2J0gObI/AAAAAAAAXxo/7iQK20DSkvEK1kg0lMbcb3NX3eu0Q1gxwCLcBGAsYHQ/s320/kari_fa_word_cloud_szines.png p1 downloaded/s320/KL_tonok_harca_veg_szo_felho.png p2 https://1.bp.blogspot.com/-CVi-9ZUaRmU/XfyNu6i0LyI/AAAAAAAAXxQ/pIsl7ClQThgVtoOp2MQf7EU8LNtnhEqwgCLcBGAsYHQ/s320/KL_tonok_harca_veg_szo_felho.png p1 downloaded/img/icon18_edit_allbkg.gif p2 https://resources.blogblog.com/img/icon18_edit_allbkg.gif p1 downloaded/img/icon18_edit_allbkg.gif p2 https://resources.blogblog.com/img/icon18_edit_allbkg.gif p1 downloaded/img/icon18_edit_allbkg.gif p2 https://resources.blogblog.com/img/icon18_edit_allbkg.gif p1 downloaded/img/icon18_edit_allbkg.gif p2 https://resources.blogblog.com/img/icon18_edit_allbkg.gif p1 downloaded/img/icon18_edit_allbkg.gif p2 https://resources.blogblog.com/img/icon18_edit_allbkg.gif p1 downloaded/img/icon18_edit_allbkg.gif p2 https://resources.blogblog.com/img/icon18_edit_allbkg.gif p1 downloaded/img/icon18_edit_allbkg.gif p2 https://resources.blogblog.com/img/icon18_edit_allbkg.gif p1 downloaded/s320/KL_karacsonyi_szofelho.png p2 https://1.bp.blogspot.com/-LvQsQz0kOTU/XfyOEdINRWI/AAAAAAAAXxc/k1cZdGkTJnwYvkABO3oMxH10kKwx2edPwCLcBGAsYHQ/s320/KL_karacsonyi_szofelho.png p1 downloaded/img/icon18_wrench_allbkg.png p2 https://resources.blogblog.com/img/icon18_wrench_allbkg.png p1 downloaded/img/icon18_wrench_allbkg.png p2 https://resources.blogblog.com/img/icon18_wrench_allbkg.png p1 downloaded/img/icon18_wrench_allbkg.png p2 https://resources.blogblog.com/img/icon18_wrench_allbkg.png p1 downloaded/img/icon18_wrench_allbkg.png p2 https://resources.blogblog.com/img/icon18_wrench_allbkg.png p1 downloaded/img/icon18_wrench_allbkg.png p2 https://resources.blogblog.com/img/icon18_wrench_allbkg.png p1 downloaded/img/icon18_wrench_allbkg.png p2 https://resources.blogblog.com/img/icon18_wrench_allbkg.png p1 downloaded/img/icon18_wrench_allbkg.png p2 https://resources.blogblog.com/img/icon18_wrench_allbkg.png p1 downloaded/img/icon18_wrench_allbkg.png p2 https://resources.blogblog.com/img/icon18_wrench_allbkg.png p1 downloaded/img/icon18_wrench_allbkg.png p2 https://resources.blogblog.com/img/icon18_wrench_allbkg.png