剥离beautfulsoup返回的链接

2024-05-04 00:57:34 发布

您现在位置:Python中文网/ 问答频道 /正文

当我使用beautifulsoup时,从href返回以下代码。你知道吗

"/url?q=http://druid8.sit.aau.dk/acc_papers/kdln4ccpef78ielqg01fuabr81s1.pdf&sa=U&ei=HkNsUauqN_GQiAf5p4CwDg&ved=0CDkQFjAJ&usg=AFQjCNGk0DTzu2K2ieIKS-SXAeS5-VYTgA"

什么是最简单的方法来削减只有http://。。。。pdf以便我可以下载文件?你知道吗

for link in soup.findAll('a'):
    try:
            href = link['href']
            if re.search(re.compile('\.(pdf)'), href):
            print href
    except KeyError:
            pass

Tags: 代码rehttpurlpdflinkacchref
2条回答

他们的表现如何?你知道吗

href.split('q=')[1].split('&')[0]

如果没有正则表达式就行了。这也可以做到:

href[7:href.index('&')] # may need +1 after .index call

它们似乎都在我的交互终端上工作:

>>> s = "/url?q=http://druid8.sit.aau.dk/acc_papers/kdln4ccpef78ielqg01fuabr81s1.pdf&sa=U&ei=HkNsUauqN_GQiA f5p4CwDg&ved=0CDkQFjAJ&usg=AFQjCNGk0DTzu2K2ieIKS-SXAeS5-VYTgA"
>>>
>>> s[7:s.index('&')]
'http://druid8.sit.aau.dk/acc_papers/kdln4ccpef78ielqg01fuabr81s1.pdf'
>>>
>>> s.split('q=')[1].split('&')[0]
'http://druid8.sit.aau.dk/acc_papers/kdln4ccpef78ielqg01fuabr81s1.pdf'
>>>

你也可以用这个正则表达式:

>>> import re
>>>
>>> re.findall('http://.*?\.pdf', s)
['http://druid8.sit.aau.dk/acc_papers/kdln4ccpef78ielqg01fuabr81s1.pdf']
>>>

一个更具python风格的方法是urlparse库:

A = "/url?q=http://druid8.sit.aau.dk/acc_papers/kdln4ccpef78ielqg01fuabr81s1.pdf&sa=U&ei=HkNsUauqN_GQiAf5p4CwDg&ved=0CDkQFjAJ&usg=AFQjCNGk0DTzu2K2ieIKS-SXAeS5-VYTgA"

import urlparse
sol = urlparse.parse_qs(A)
print sol["/url?q"][0]

它给出:

>> http://druid8.sit.aau.dk/acc_papers/kdln4ccpef78ielqg01fuabr81s1.pdf

如果您使用的是python3,synatax会略有不同,上面显示的是python2.7版本。如果你也喜欢其他的参数,这真的很好,例如:

print sol["ved"]
>> ['0CDkQFjAJ']

相关问题 更多 >