作为一种替代方法,您可以使用BeautifulSoup 提取所有带有display:none 的<td> 元素。有了这个,我取消了所有 HTML 实体(将 &gt; 转换为 >),用逗号分割文本,并为列表中的每个条目进一步分割基于 > 的每个条目给你键/value 对来构造 params 字典:
from bs4 import BeautifulSoup
import HTMLParser
h = HTMLParser.HTMLParser()
html = requests.get(URL)
soup = BeautifulSoup(html)
for td in soup.find_all('td', style=re.compile('display\s*:\s*none')):
params = {}
for p in h.unescape(td.text).split(','):
k, v = p.split('>')
params[k] = v
print 'Id {}'.format(params['id'])
print 'Id32 {}'.format(params['id32'])
这将显示id 和id32,如下所示:
Id 277918954
Id32 c14f940e3eed6a3871e1e3376048303f
params 将保存所有值:
{u'hash': u'538dd38791b76170ab71feec9ef6fed5', u'name': u'file.png', u'level': u'0', u'type': u'File png', u'key_right': u'0', u'key_left': u'0', u'id32': u'c14f940e3eed6a3871e1e3376048303f', u'id': u'277918954', u'size': u'139.27 KB'}
这些可以显示如下:
for k, v in params.iteritems():
print '{} : {}'.format(k, v)
给予:
hash : 538dd38791b76170ab71feec9ef6fed5
name : file.png
level : 0
type : File png
key_right : 0
key_left : 0
id32 : c14f940e3eed6a3871e1e3376048303f
id : 277918954
size : 139.27 KB
如果您已有<td> 条目的列表,则id32s 可以显示如下:
entries = [
'id>277918954,id32>c14f940e3eed6a3871e1e3376048303f,level>0,key_left>0,key_right>0,name>file.png,type>File png,size>139.27 KB,hash>538dd38791b76170ab71feec9ef6fed5',
'id>277918891,id32>4029b601c64a573be83f1114ffee88ac,level>0,key_left>0,key_right>0,name>nn.py,type>File py,size>2.87 KB,hash>bc8e6fcd432053547ae9227daf1fc8bc',
'id>277918001,id32>6bcd9fe60959a8798af2fea0db163792,level>0,key_left>0,key_right>0,name>new_100mb.test,type>File test,size>100 MB,hash>9b5183f05b62ca114c467945467050be',
'id>277917368,id32>183ad6a4932d1a11016f63fc563b610d,level>0,key_left>0,key_right>0,name>new_100mb.test,type>File test,size>100 MB,hash>9b5183f05b62ca114c467945467050be',
'id>277917219,id32>606e98d6d7a8ee286556e05752f71723,level>0,key_left>0,key_right>0,name>new_100mb.test,type>File test,size>100 MB,hash>9b5183f05b62ca114c467945467050be',
'id>277916938,id32>2086038f425efaeeab7e91904c0a24bc,level>0,key_left>0,key_right>0,name>new_100mb.test,type>File test,size>100 MB,hash>9b5183f05b62ca114c467945467050be',
'id>277915939,id32>5dc0b114317bb9b1250a20275cb5f7a5,level>0,key_left>0,key_right>0,name>100mb.test,type>File test,size>100 MB,hash>9b5183f05b62ca114c467945467050be']
for entry in entries:
params = {}
for p in entry.split(','):
k, v = p.split('>')
params[k] = v
print 'Id32 {}'.format(params['id32'])
给你:
Id32 c14f940e3eed6a3871e1e3376048303f
Id32 4029b601c64a573be83f1114ffee88ac
Id32 6bcd9fe60959a8798af2fea0db163792
Id32 183ad6a4932d1a11016f63fc563b610d
Id32 606e98d6d7a8ee286556e05752f71723
Id32 2086038f425efaeeab7e91904c0a24bc
Id32 5dc0b114317bb9b1250a20275cb5f7a5