Python 3.x 漂亮的Soup4 Find All使用索引获取特定值
我最近创建了一个网页刮板,我正在刮板一个网站的日期。下面是HTML代码片段:Python 3.x 漂亮的Soup4 Find All使用索引获取特定值,python-3.x,beautifulsoup,Python 3.x,Beautifulsoup,我最近创建了一个网页刮板,我正在刮板一个网站的日期。下面是HTML代码片段: <dl class="dl-horizontal"> <dd> ::before September 22, 1966 ::after </dd> </dl> ::之前 1966年9月22日 ::之后 当我这样做时: dob=soup.find_all(“
<dl class="dl-horizontal">
<dd>
::before
September 22, 1966
::after
</dd>
</dl>
::之前
1966年9月22日
::之后
当我这样做时:
dob=soup.find_all(“dd”)
我得到(编辑以隐藏一些个人信息):
[Clevenger,XXX-XX-XXXX你应该看看那些废话,111-111-111119966年9月22日,1日,52岁,处女座]
我只想要日期:1966年9月22日
我怎么才能得到呢
编辑:将find更改为find\u all和xPath:
/*[@id=“details”]/div[2]/div[2]/div[1]/div[2]/dl[6]/dd[1]
CSS选择器:
div#details>div:nth类型(2)>div:nth类型(2)>div>div:nth类型(2)>dl:nth类型(6)>dd
尝试找出该类的类/id名称(或任何属性)
如果你能写下这样的东西,那就容易多了:
dob = soup.select("dd[class=date]")
万一你不能。。考虑正则表达式,找出哪个<代码> <代码>标签包含日期:
months = '[(January), (February), (March), (April), (May), (June), (July), (August), (September), (October), (November), (December)]'
for elem in dop:
text = elem.getText()
pattern = str(months) + r'\s\d{1,2},\s\d{4}'
if re.search(pattern, text) != None:
print('matching!')
else:
print('not a match!')
soup.find()
应该只返回第一个元素,您是否正在使用find_all
?我们需要更多的html来帮助您,目标是为该块找到唯一的选择器。检查浏览器中的开发工具,了解一些想法(css选择器、xpath…)