【问题标题】:Using Python with BeautifulSoup to extract numbers (multiple spans and classes)使用 Python 和 BeautifulSoup 提取数字(多个跨度和类)
【发布时间】:2017-04-19 05:31:25
【问题描述】:

我正在尝试将 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 代码:

import requests
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("span", {"class":"confluenceTd"})

print data            

再次,我只是想提取实际数字。任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 在 HTML 代码中,您没有任何属于“confluenceTd”类的跨度。这就是你得到一个空列表的原因。为了以后的讨论,我建议您将代码缩小到最后三行,因为其他所有内容都与问题无关。我们希望您制作出最小可验证的示例。

标签: python python-2.7 beautifulsoup


【解决方案1】:

如果您想获取特定类下的所有数字,请使用正则表达式/正则表达式来提取数字并确保请求是在提取 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)

【讨论】:

    猜你喜欢
    • 2013-01-29
    • 1970-01-01
    • 2021-10-05
    • 2022-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多