Forum: PC-Programmierung Python Hyperlink extrahieren


von Jochen (Gast)


Lesenswert?

Hi,

wie kann ich in meinem Beispiel den herausgesuchten Link darstellen?
1
import codecs
2
from bs4 import BeautifulSoup 
3
from urllib.request import urlopen
4
from tkinter.filedialog import askopenfilename
5
6
7
name = askopenfilename(filetypes =(("Import File", "*.txt"),("All Files","*.*")),title = "")
8
9
f = codecs.open(name, encoding='utf-8')
10
11
12
file_names = []
13
14
for file_name in f.readlines():
15
    file_name = file_name.strip()
16
    if ',' in file_name:
17
        for f in file_name.split(','):
18
            file_names.append(f)
19
    else:
20
        file_names.append(file_name)
21
22
23
24
  
25
    URL = BeautifulSoup (urlopen(file_name), "html.parser")  
26
    result = URL.findAll('a', h ref=True, text='Hinweise')
27
    print (result)

Jetzt wird das aktuell so angezeigt:
[<a h ref="mikrocontroller.net/">Hinweise</ a>]

P.S.:
Wegen dem Forum Spam Filter musste ich
1
h ref
 das Leerzeichen einfügen. Da ist normal kein Leerzeichen enthalten

von Tom (Gast)


Lesenswert?

https://www.crummy.com/software/BeautifulSoup/bs4/doc/
"One common task is extracting all the URLs found within a page’s <a> 
tags:"

von c.m. (Gast)


Lesenswert?

kann python regex?
1
wget -qO - 'https://www.mikrocontroller.net/topic/408425#new' | perl -ne 'print "$1\n" if /h ref="(.+?)"/'
2
3
/assets/screen-25aeb641e7e36168d501aeefd29f1c157a8c7da8742b07c3f149cdd6b944c7b6.css
4
/assets/print-6a10251861e8c43ce72044862fabaf8065abdfa2c1879af13ac74a64f19d2f67.css
5
/favicon.ico
6
http://www.mikrocontroller.net/topic/408425
7
/newsfeed
8
/feed/global
9
/feed/forum/8
10
/feed/topic/408425
11
/searchplugin.xml
12
//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css
13
/
14
/
15
/articles/AVR
16
/articles/ARM
17
18

"h ref" auch hier mit spam-lmaa

von Joachim S. (oyo)


Lesenswert?

Ich habe mit diesem BeautifulSoup zwar keine Erfahrung, aber der Doku 
nach (https://www.crummy.com/software/BeautifulSoup/bs4/doc/) würde ich 
vermuten, dass es so gehen müsste:

URL = BeautifulSoup (urlopen(file_name), "html.parser")
    result = URL.findAll('a', h ref=True, text='Hinweise')
    print (result[0].get('href'))

bzw. so, falls mehrere passende URLs enthalten sein können:

URL = BeautifulSoup (urlopen(file_name), "html.parser")
    results = URL.findAll('a', h ref=True, text='Hinweise')
    for result in results:
        print (result.get('href'))

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.