Python 3.x 漂亮的Soup4 Find All使用索引获取特定值

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(“

我最近创建了一个网页刮板,我正在刮板一个网站的日期。下面是HTML代码片段:

    <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…)