2017-04-19 79 views
-1

我想与BeautifulSoup使用Python以便从网页拉多个数字。我知道我做错了,但因为我的脚本正在返回一个空数组。事实上,有多个跨度和课程也让我感到困惑。这里是我一起工作的HTML数据的样本:使用Python与BeautifulSoup提取数字(多个跨度和类)

<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    

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

+0

在HTML代码,你没有属于任何跨度班级“confluenceTd”。这就是为什么你会得到一个空的列表。为了将来的讨论,我建议你将代码缩小到最后三行,因为其他所有内容都与问题无关。我们期望您提供可证实的最小范例。 – DyZ

回答

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)