首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >,"urlparse.urlparse(url).hostname“不返回任何值

,"urlparse.urlparse(url).hostname“不返回任何值
EN

Stack Overflow用户
提问于 2013-12-01 17:26:39
回答 2查看 4.5K关注 0票数 6

在登录一个网站后,我想收集它的链接。我使用这个函数(使用机械化库和urlparse库):

代码语言:javascript
复制
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)

我得到了一条错误信息:

代码语言:javascript
复制
    mylinks.append("http://" + hostname + path)
TypeError: cannot concatenate 'str' and 'NoneType' objects

我不知道如何解决这个问题,甚至连它都可以解决。是否有任何方法强制函数附加,即使它会产生一个不工作和奇怪的结果为无值?

或者,我在链接中真正想要的是链接的结尾。例如,其中一个链接的html代码如下所示(我想要的是世界"lexik"):

代码语言:javascript
复制
<td class="center">
    <a href="http://UnimportantPartOfLink/lexik>>lexik</a>
</td>

因此,另一种方法是,如果机械化可以直接收集这个值,就可以绕过链接,而没有任何价值问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-01 18:05:57

另一种很好的方法,不需要尝试,除了阻止-

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

代码语言:javascript
复制
hostname = urlparse.urlparse(url).hostname or ''

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

代码语言:javascript
复制
path = urlparse.urlparse(url).path or ''

希望这能帮上忙!

票数 6
EN

Stack Overflow用户

发布于 2013-12-01 17:43:43

为什么不使用try/except块呢?

代码语言:javascript
复制
try:
    mylinks.append("http://" + hostname + path)
except TypeError:
    continue

如果有一个错误,它将跳过附加和继续循环。

希望这能有所帮助!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20315010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档