2016-10-09 9 views
-1

У меня есть код python, откуда я хочу получить имя хоста и путь отдельно. например www.stackoverflow.com/questions/ask я хочу привести, как это «имя хоста: www.stackoverflow.com и путь:/вопросы/задать»Я хочу получить имя хоста и путь отдельно от тега href В Python

Вот мой питон код:

import urllib 
from bs4 import BeautifulSoup 
import urlparse 
import mechanize 
import socket 
import errno 
import io 
from nyt4 import articalText 

url = "http://www.nytimes.com/section/health" 
br = mechanize.Browser() 
br.set_handle_equiv(False) 
htmltext = br.open(url) 
#htmltext = urllib.urlopen(url).read() 
soup = BeautifulSoup(htmltext) 
maindiv = soup.findAll('section', attrs={'class':'health-collection collection'}) 
for links in maindiv: 
    atags = soup.findAll('a',href=True) 
    for link in atags: 
     alinks= link.get('href') 
     print alinks.hostname 
     print alinks.path 

Но этот код дает мне эту ошибку:

Traceback (most recent call last): 
    File "<pyshell#18>", line 1, in <module> 
    execfile("nytimes/test2.py") 
    File "nytimes/test2.py", line 21, in <module> 
    print alinks.hostname 
AttributeError: 'unicode' object has no attribute 'hostname' 

ответ

0

alinks= link.get('href') которые устанавливают alinks в строку whih определенно не имеет имя хоста или путь атрибута, вы можете использовать urlparse, чтобы получить тракту и ч ostname:

import mechanize 
from bs4 import BeautifulSoup 
from urlparse import urlparse 

url = "http://www.nytimes.com/section/health" 
br = mechanize.Browser() 
br.set_handle_equiv(False) 
htmltext = br.open(url) 
#htmltext = urllib.urlopen(url).read() 
soup = BeautifulSoup(htmltext) 
maindiv = soup.find_all('section', attrs={'class':'health-collection collection'}) 
for links in maindiv: 
    atags = soup.find_all('a',href=True) 
    for link in atags: 
     alinks = urlparse(link.get('href')) 
     print alinks.hostname 
     print alinks.path 
+1

замечательный его рабочий :) –