python,"urlparse.urlparse(url).hostname"返回无值

use*_*161 6 python urlparse

登录网站后,我想收集其链接.这是我用这个函数(使用mechanize和urlparse库):

br = mechanize.Browser()

.
. #logging in on website
.

for link in br.links():
    url = urlparse.urljoin(link.base_url, link.url)

    hostname = urlparse.urlparse(url).hostname
    path = urlparse.urlparse(url).path

    #print hostname #by printing this I found it to be the source of the None value

    mylinks.append("http://" + hostname + path)
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

    mylinks.append("http://" + hostname + path)
TypeError: cannot concatenate 'str' and 'NoneType' objects
Run Code Online (Sandbox Code Playgroud)

我不确定如何解决这个问题,或者即使它可以修复.有没有办法强制函数追加,即使它会为None值产生一个非工作和奇怪的结果?

或者,我在链接中真正关注的是链接结束的内容.例如,其中一个链接的html代码看起来像这样(我所追求的是世界"lexik"):

<td class="center">
    <a href="http://UnimportantPartOfLink/lexik>>lexik</a>
</td>
Run Code Online (Sandbox Code Playgroud)

所以另一条路线就是机械化可以直接收集这个值,绕过链路而无值麻烦

Aro*_*vit 5

没有任何尝试和除块之外的另一个好方法 -

替换hostname = urlparse.urlparse(url).hostname

hostname = urlparse.urlparse(url).hostname or ''
Run Code Online (Sandbox Code Playgroud)

和类似的路径= urlparse.urlparse(url).path

path = urlparse.urlparse(url).path or ''
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 !