2017-10-01 10 views
1

Ich erstelle einen Web-Crawler und versuche, Programm in Pycharm auszuführen Anker-Tags einer URL abrufen. Aber die Ausgabe, die ich bekomme, ist nur die gleiche URL, die ich eingegeben habe . Code ist wie folgt:Abrufen von Anchor-Tags beim Erstellen eines Web-Crawlers in Python

import urllib.request,urllib.parse,urllib.error 
    from bs4 import BeautifulSoup 
    import ssl 
    ctx=ssl.create_default_context() 
    ctx.check_hostname=False 
    ctx.verify_mode=ssl.CERT_NONE 

    url=input("https://en.wikipedia.org/wiki/Apple_Inc.") 
    html=urllib.request.urlopen(url, context=ctx).read() 
    soup=BeautifulSoup(html, 'html.parser') 

    tags=soup("a") 
    for tag in tags: 
     print(tag.get("href",None)) 

Eine Sache, hier zu bemerken ist, dass in urllib Bibliothek nur urllib.error verwendete Aussage zeigt und sowohl urllib.request und urllib.parse zeigt als nicht verwendete Aussage, die ich nicht kann verstehen warum.

Der Ausgang für dieses Programm ist: https://en.wikipedia.org/wiki/Apple_Inc.

Ich benutze Python 3.5.1 und pycharm Community Edition.

Antwort

0

Sie sollten wirklich das requests Paket verwenden. Es ist äußerst nützlich für Crawling-Zwecke. Check out this user response about requests.

Hier wird der Code umgewandelt:

import requests 
from bs4 import BeautifulSoup 

request = requests.get("https://en.wikipedia.org/wiki/Apple_Inc.").text 
soup = BeautifulSoup(request, "html.parser") 

anchor = soup.find_all("a", href=True) 
for a in anchor: 
    print (a["href"]) 
Verwandte Themen