使用从Beautifulsoup中提取的hrefs

时间:2016-12-09 10:04:28

标签: python-2.7 beautifulsoup web-crawler python-unicode

我是一名Python初学者,学习网络爬行。

在这个项目中,我必须检索一些hrefs,然后在每个href链接中打印出文本内容。到目前为止,这是我的代码:

import requests, bs4, os, webbrowser
url = 'http://www.constructeursdefrance.com/resultat/?dpt=53'
res = requests.get(url)
res.raise_for_status()

soup = bs4.BeautifulSoup(res.text,'html.parser')
for a in soup.select('.link'):
    links = a.find('a').attrs['href']

我用链接尝试了很多东西,但它会说“unicode不可调用”。 我如何使用这些链接并最终迭代它们以提取其中的文本?

由于

2 个答案:

答案 0 :(得分:0)

尝试以下方法:

import requests, bs4, os, webbrowser
url = 'http://www.constructeursdefrance.com/resultat/?dpt=53'
res = requests.get(url)
res.raise_for_status()

soup = bs4.BeautifulSoup(res.text,'lxml')
links = soup.findAll('a')

for link in links:
    try:
        print link.attrs['href']
    except:
        pass

希望这有帮助。

答案 1 :(得分:0)

你的代码差不多完成,只需稍加改动

import requests, bs4, os, webbrowser
url = 'http://www.constructeursdefrance.com/resultat/?dpt=53'
res = requests.get(url)
res.raise_for_status()

soup = bs4.BeautifulSoup(res.text,'html.parser')
links = []
for div in soup.select('.link'):
    link = div.a.get('href')
    links.append(link)
print(links)

出:

['http://www.constructeursdefrance.com/concept-habitat/',
 'http://www.constructeursdefrance.com/maisons-bois-cruard/',
 'http://www.constructeursdefrance.com/passiva-concept/',
 'http://www.constructeursdefrance.com/les-constructions-de-la-mayenne/',
 'http://www.constructeursdefrance.com/maisonsdenfrance53/',
 'http://www.constructeursdefrance.com/lemasson53/',
 'http://www.constructeursdefrance.com/ecb53/',
 'http://www.constructeursdefrance.com/villadeale-53/',
 'http://www.constructeursdefrance.com/habitat-plus-53/']

select(' .link')将返回包含子标记a的div标记列表,  因此,您可以按div.a获取标记,然后通过div.a.get('href')

获取href