Beautifulsoup从无序列表div中提取文本和链接< UL

时间:2013-10-09 08:49:16

标签: python html web-scraping beautifulsoup extract

我尝试从此网页的左侧(http://www.silvan.dk/butikker)提取城市名称。原因是我需要提取每个城市的物理地址(可以在链接引用的页面上找到,但是,对于我开始提取城市名称的时间)。 更确切地说,从这个容器。但是,由于我刚开始使用Python和Beautifulsoup,我无法提取想要的信息。

结果应该给我: 城市,城市链接。

到目前为止,我有:

import urllib2
import sys, locale, os, re
import lxml.etree
from bs4 import BeautifulSoup

def cp65001(name):
if name.lower() == 'cp65001':
    return codecs.lookup('utf-8')

html_page = urllib2.urlopen("http://www.silvan.dk/butikker",'w')
soup = BeautifulSoup(html_page)
li = soup.select("ul > li > a")
for link in li:
    print link.get('href')

这给了我以下输出:

#1
#2
#3
#4    
#5
#6
#7
#8
#9    
#10
#11
#12
#13
#14    
#15
#16
#17
#18

如果有人能指导我解决方案,我将非常感激。 我累了用

div = soup.find('div', id='leftContent')
lis = div.find_all('li')
num_lis = len(lis)

但是一次运行后停止了工作,我不知道为什么? 谢谢你的时间。

1 个答案:

答案 0 :(得分:3)

从以下位置更改选择器:

li = soup.select("ul > li > a")

为:

li = soup.select(".subMenu li a")

输出:

http://www.silvan.dk/butikker/ballerup
http://www.silvan.dk/butikker/birkeroed
http://www.silvan.dk/butikker/city2
http://www.silvan.dk/butikker/esbjerg
http://www.silvan.dk/butikker/fisketorvet
http://www.silvan.dk/butikker/fredericia
http://www.silvan.dk/butikker/frederikshavn
etc

你可以找到非常好的选择器文档here