使用Python和BeautifulSoup提取数字(多个跨度和类)

2024-06-29 00:55:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用Python和BeautifulSoup来从一个网页中提取多个数字。我知道我做错了什么,因为我的脚本返回了一个空数组。有多个跨度和类的事实也让我困惑。以下是我使用的HTML数据示例:

<td class="confluenceTd" colspan="1">
         <span>
          Autoworks
         </span>
        </td>
        <td class="confluenceTd" colspan="1">
         900009
        </td>
        <td class="confluenceTd" colspan="1">
         <p>
          uyi: 3456778, 33344778, 11199087
         </p>
         <p>
          PRY: 54675389
         </p>
        </td>
<td class="confluenceTd" colspan="1">
         AutoNone
        </td>
        <td class="confluenceTd" colspan="1">
         9998887
        </td>
        <td class="confluenceTd" colspan="1">
         <p>
          YUN: 232323, 6788889, 78695554
         </p>
         <p>
          IOY: 3444666, 2343233, 1232322
         </p>
        </td>

下面是我的Python代码:

^{pr2}$

再说一遍,我只是想找出实际数字。任何帮助都将不胜感激。谢谢。在


Tags: 数据脚本网页示例html数字数组class
1条回答
网友
1楼 · 发布于 2024-06-29 00:55:52

如果您想获取特定类下的所有数字,请使用regex/正则表达式来拉取数字,并确保请求正在拉html

 import requests,re
 from bs4 import BeautifulSoup
 s = requests.Session()
 s.post('https://wiki.example.com/login', data={'user':"user1",'password': 'pass1'})
 r = s.get('https://wiki.example.com/example/section')
 data_payload = r.content
 soup = BeautifulSoup(data_payload, 'html.parser')
 data = soup.findAll("td", {"class":"confluenceTd"})
 for d in data:
    m=re.search('([0-9]+)',str(d.findAll(text=True)))
    if m:
       print m.group(0)

相关问题 更多 >