Avatar billede VC1 Juniormester
04. april 2021 - 21:10 Der er 22 kommentarer

Download af kildetekst på mange forskellige URL's på én gang?

Findes der en hjemmeside eller en måde hvorpå at jeg kan få vist kildeteksten på mange forskellige hjemmesider på én gang, altså i forlængelse af hinanden?

Jeg kan naturligvis gå ind manuelt og tage hver enkelt, men da jeg gerne vil prøve at få denne vist samlet på én gang for at spare tid, er dette så muligt?

Enten vha. excel eller andre smarte ting?
Avatar billede jakobdo Ekspert
04. april 2021 - 23:05 #1
Du kunne gøre det i python?

pip install requests

import requests

domains = [
"https://domain1.dk",
"https://domain2.dk",
]

for domain in domains:
  response = requests.get(domain, verify=False)
  response.raise_for_status()
  # Save response.text
Avatar billede VC1 Juniormester
04. april 2021 - 23:24 #2
Er ikke programmør, men skal lede efter én bestemt ting i html koden.

Har prøvet at copy past dit input og tilføje i
https://www.programiz.com/python-programming/online-compiler/

og bruge view-source:https://www.webdesigner.dk/ som eks. på domain1

- Det virker i hvert fald ikke.
Avatar billede jakobdo Ekspert
04. april 2021 - 23:59 #3
Denne kode virker nu fint for mig på den side du linker til:

import requests
domains = ['http://exp.dk', 'http://www.jubii.dk', 'http://www.yahoo.dk']

for domain in domains:
    print(domain)
    response = requests.get(domain)
    print(f"Response data length: {len(response.text)}")
    # Remove # from line below to see  source
    # print(response.text)
Avatar billede jakobdo Ekspert
04. april 2021 - 23:59 #4
Den sætter det forkert op her på exp.
Prøv her: https://dpaste.org/75OM
Avatar billede kingoman Mester
05. april 2021 - 00:09 #5
Hej Jakob,

Jeg har nu prøvet at smide dette ind i python 3.9 (hentet fra python.org), men det virker stadig ikke.

SyntaxError: invalid non-printable character U+200b
>>> for domain in domains
Avatar billede kingoman Mester
05. april 2021 - 00:20 #6
VC1 her
- Kan se at den logger på en gammel bruger på min 'test pc'

Se billede for hvad den siger, når jeg trykker enter
Avatar billede kingoman Mester
05. april 2021 - 00:20 #7
Avatar billede jakobdo Ekspert
05. april 2021 - 00:34 #8
Du mangler
Pip install requests
Avatar billede kingoman Mester
05. april 2021 - 00:38 #9
Undskyld, men det fungerer altså stadig ikke, må være lidt for dum til det her?

Skal jeg trykke enter mellem hver linje eller lignende fordi jeg kopier bare det hele, sætter ind og trykker enter

pip install requests

import requests

domains = ["https://www.webdesigner.dk/"]

for domain in domains:
  response = requests.get(domain, verify=False)
  response.raise_for_status()
  # Save response.text
Avatar billede kingoman Mester
05. april 2021 - 00:40 #10
Avatar billede kingoman Mester
05. april 2021 - 00:56 #11
Måske mangler jeg at installere noget packages?
Avatar billede kingoman Mester
05. april 2021 - 01:01 #12
Avatar billede jakobdo Ekspert
05. april 2021 - 01:12 #13
Avatar billede kingoman Mester
05. april 2021 - 01:16 #14
Jeg kører WIN, og tænkte godt det var noget med det.

Fandt en video til PIP request og beautiful soup4 dog oplever jeg stadig fejl
Avatar billede kingoman Mester
05. april 2021 - 01:18 #15
Local\Programs\Python\Python39\lib\site-packages\urllib3\connectionpool.py:1013: InsecureRequestWarning: Unverified HTTPS request is being made to host 'www.webdesigner.dk'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  warnings.warn(
>>>
Avatar billede kingoman Mester
05. april 2021 - 01:20 #16
Hmm eller også så virkede det faktisk.
- Hvor gemmer den filen så jeg kan se html koden?
Avatar billede kingoman Mester
05. april 2021 - 01:26 #17
Avatar billede kingoman Mester
05. april 2021 - 02:11 #18
Hej Jakob,

Jeg fandt ud jeg der skulle skrives reponse.text - For at få texten frem i python
- Dog virker det stadig ikke optimalt, da jeg ikke får alle hjemmesiderne eller hele html-koden på siden

Fandt dog ud af, at koden her virker på at få alt html-koden, dog ved jeg ikke hvordan jeg indsætter flere hjemmesider samlet.
(Ved bare at kopier din løsning på flere hjemmesider fungere nemlig ikke :( )

>>> import requests
>>> import bs4
>>> res = requests.get('https://www.webdesigner.dk')
>>> type(res)
<class 'requests.models.Response'>
>>>
>>> res.text
Avatar billede jakobdo Ekspert
05. april 2021 - 08:56 #19
res = requests.get("hjemmeside") virker netop fint.
For at du kan få det til at virke, skal du loope dem, som jeg gør i mit første eksempel.

res.text indeholde så korrekt alt sourcen.
Så kan du bruge bs4 til at parse siden efterfølgende.

Men eftersom jeg ikke ved hvad du yderligere vil, er det svært at hjælpe.
Min kode virker fint lokalt nemlig.
Avatar billede kingoman Mester
05. april 2021 - 09:22 #20
Tak for dit svar, men det virker ikke hos mig jf. din instruks.

Jeg fandt en anden løsning, men også der bliver der påpeget loop, hvilket jeg ikke aner noget om.

import requests

domains = ['https://webdesigner.dk', 'https://www.dk4.dk/item/4128-persondatapolitik']
for domain in domains:
    print(domain)
    response = requests.get(domain)
    print(f"Response data length: {len(response.text)}")
    # Remove # from line below to see source
    # print(response.text)

    with open('source.html', 'a', encoding='utf-8') as f:
        f.write(response.text.strip())


- Dette var løsningen som jeg fik andet sted, hvilket ser ud til at fungerer rigtig godt. Dog kan den stadig bare KUN tage html-koden fra den sidste.

Jeg vil have htmlkoden fra hjemmeside1 og hjemmeside2 lagt sammen i response.text så jeg kan copy paste hele muleviten af én gang over i et word.
Avatar billede kingoman Mester
05. april 2021 - 09:35 #21
Avatar billede jakobdo Ekspert
05. april 2021 - 10:28 #22
Hvad indeholder source.html?
Den burde da have alt source
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester