从beautifulsoup中提取href:为什么没有?

时间:2018-08-10 14:02:42

标签: python web-scraping beautifulsoup

我正在使用BeautifulSoup4解析网站。代码:

for link in soup.find_all("div", {"class": "fl nav_left_2j"}):
    for item in link.find_all("li"):
        print(item)

得到我:

<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince1.htm" title="点击查看 北京市 更多领导信息">北京市</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince18.htm" title="点击查看 天津市 更多领导信息">天津市</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince35.htm" title="点击查看 河北省 更多领导信息">河北省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince219.htm" title="点击查看 山西省 更多领导信息">山西省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince351.htm" title="点击查看 内蒙古自治区 更多领导信息">内蒙古自治区</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince465.htm" title="点击查看 辽宁省 更多领导信息">辽宁省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince580.htm" title="点击查看 吉林省 更多领导信息">吉林省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince650.htm" title="点击查看 黑龙江省 更多领导信息">黑龙江省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince792.htm" title="点击查看 上海市 更多领导信息">上海市</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince810.htm" title="点击查看 江苏省 更多领导信息">江苏省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince926.htm" title="点击查看 浙江省 更多领导信息">浙江省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince1028.htm" title="点击查看 安徽省 更多领导信息">安徽省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince1150.htm" title="点击查看 福建省 更多领导信息">福建省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince1245.htm" title="点击查看 江西省 更多领导信息">江西省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince1357.htm" title="点击查看 山东省 更多领导信息">山东省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince1515.htm" title="点击查看 河南省 更多领导信息">河南省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince1692.htm" title="点击查看 湖北省 更多领导信息">湖北省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince1809.htm" title="点击查看 湖南省 更多领导信息">湖南省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince1946.htm" title="点击查看 广东省 更多领导信息">广东省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince2089.htm" title="点击查看 广西壮族自治区 更多领导信息">广西壮族自治区</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince2213.htm" title="点击查看 海南省 更多领导信息">海南省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince2240.htm" title="点击查看 重庆市 更多领导信息">重庆市</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince2279.htm" title="点击查看 四川省 更多领导信息">四川省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince2482.htm" title="点击查看 贵州省 更多领导信息">贵州省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince2580.htm" title="点击查看 云南省 更多领导信息">云南省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince2726.htm" title="点击查看 西藏自治区 更多领导信息">西藏自治区</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince2807.htm" title="点击查看 陕西省 更多领导信息">陕西省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince2925.htm" title="点击查看 甘肃省 更多领导信息">甘肃省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince3026.htm" title="点击查看 青海省 更多领导信息">青海省</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince3078.htm" title="点击查看 宁夏回族自治区 更多领导信息">宁夏回族自治区</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince3106.htm" title="点击查看 新疆维吾尔自治区 更多领导信息">新疆维吾尔自治区</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince3220.htm" title="点击查看 香港特别行政区 更多领导信息">香港特别行政区</a></li>
*****
<li><a href="/web/20171221213907/http://ldzl.people.com.cn:80/dfzlk/front/personProvince3221.htm" title="点击查看 澳门特别行政区 更多领导信息">澳门特别行政区</a></li>
*****
<li><a>台湾省</a></li>
*****

哪个很棒!

现在,我要提取href(最后是标题),但我假设如果我解决一个问题,我就解决两个问题。根据文档,我应该能够添加:

print(item.get('href'))

并获取所有链接。不幸的是,我得到的只是“无”。但是那里有hrefs!我可以看到他们!如果有内置的功能可以正确地执行此操作,则我不希望不必构建大量的正则表达式。我做错什么了不起的显而易见的事情?

谢谢!

3 个答案:

答案 0 :(得分:2)

item中存储了<li>。您必须先提取<a>。您可以像item.find('a').get('href')这样来做。

答案 1 :(得分:0)

for link in item.find_all('a'):
    print(link.get('href'))

答案 2 :(得分:0)

尝试此操作,因为从find_all获取项目只会返回带有标签的数据,而且还用于提取链接,因此需要直接在<a>中找到div标签并提取href

for item in link.find_all("li"):
    print(item.a["href"])