Code: Alles auswählen
session = HTMLSession()
results = session.get(url_complete,headers=HEADERS)
links=results.html.xpath('//a[@class="sc-1z0w6pb-9 jLcJOe"]/@href')
for i,link in enumerate(links):
try:
image=results.html.find('img')[i]
img=image.attrs['src']
filename=image.attrs['title']
img_r = session.get(img,stream=True)
CoverPfad=os.path.join(pfad,"images",filename+".webp")
with open(CoverPfad, 'wb') as output_file:
shutil.copyfileobj(img_r.raw,output_file)
del img_r
jetzt habe ich mal ein test gemacht wie man das async hinkriegt.
von 14sec. normale Version
auf 1.5 sec. async
Aber ich habe jedes einzeln ohne for schleife gemacht. wie kann ich das in eine schleife generieren:
Code: Alles auswählen
asession = AsyncHTMLSession()
async def a1():
res = await asession.get(url+links[0],headers=HEADERS)
image=results.html.find('img')[0]
...
async def a2():
res = await asession.get(url+links[1],headers=HEADERS)
image=results.html.find('img')[1]
...
wie kann ich async def (): irgendwie automatisieren ?
ich kann ja "def" und dann ein Namen nicht einfach 'a'+str(i) nehmen, gibts da einen andere Möglichkeit für ?
als Beispiel habe ich: https://requests.readthedocs.io/project ... en/latest/
genommen und dieses Script:
But async is fun when fetching some sites at the same time:
Code: Alles auswählen
from requests_html import AsyncHTMLSession
asession = AsyncHTMLSession()
async def get_pythonorg():
r = await asession.get('https://python.org/')
async def get_reddit():
r = await asession.get('https://reddit.com/')
async def get_google():
r = await asession.get('https://google.com/')
session.run(get_pythonorg, get_reddit, get_google)