下面的代码很好地完成了从网页中所有tr元素获取所有详细信息的工作。
for link in page_source:
wd.get(link)
#print(link)
html_page = wd.page_source
soup = bs(html_page, 'html.parser')
table_body=soup.find('tbody')
rows = table_body.find_all('tr')
for row in rows:
cols=row.find_all('td')
cols=[x.text.strip() for x in cols]
masterlist.append(cols)
这里唯一的问题是它将我真正想要分离的某些元素混合在一起。这是一个很好的例子。当我运行上面的代码时,会得到如下结果:
col5 col7
247 1013
这里是示例代码,显示了2、4和7的组织方式。
<g transform="translate(16.5,18.5)"><text fill="black" text-anchor="middle" vertical-align="middle" font-size="8" y="3">2</text><circle stroke-width="2" stroke="green" fill-opacity="0" r="12.5" title="" style="cursor: pointer; opacity: 1; stroke-width: 2;" data-original-title="success"></circle></g>
<g transform="translate(45.5,18.5)"><text fill="black" text-anchor="middle" vertical-align="middle" font-size="8" y="3"></text><circle stroke-width="1" stroke="gainsboro" fill-opacity="0" r="12.5" title="" style="opacity: 1;" data-original-title="running"></circle></g>
<g transform="translate(74.5,18.5)"><text fill="black" text-anchor="middle" vertical-align="middle" font-size="8" y="3">4</text><circle stroke-width="2" stroke="red" fill-opacity="0" r="12.5" title="" style="cursor: pointer; opacity: 1; stroke-width: 2;" data-original-title="failed"></circle></g>
<g transform="translate(103.5,18.5)"><text fill="black" text-anchor="middle" vertical-align="middle" font-size="8" y="3">7</text><circle stroke-width="2" stroke="orange" fill-opacity="0" r="12.5" title="" style="cursor: pointer; opacity: 1; stroke-width: 2;" data-original-title="upstream_failed"></circle></g>
<g transform="translate(132.5,18.5)"><text fill="black" text-anchor="middle" vertical-align="middle" font-size="8" y="3"></text><circle stroke-width="1" stroke="gainsboro" fill-opacity="0" r="12.5" title="" style="opacity: 1;" data-original-title="up_for_retry"></circle></g>
<g transform="translate(161.5,18.5)"><text fill="black" text-anchor="middle" vertical-align="middle" font-size="8" y="3"></text><circle stroke-width="1" stroke="gainsboro" fill-opacity="0" r="12.5" title="" style="opacity: 1;" data-original-title="queued"></circle></g>
所有内容都在<g transform>
标记内,并且如果存在数字,它们总是在</text>
之前。有时这里没有数字。因此,2、4和7都是独立且不同的变量,但是它们正在合并在一起。同样,10,1和3都是分开且不同的。如果我可以将这些数字用逗号分隔或管道分隔,则可以轻松地将所有内容放入数据框以使其井井有条。
我想以这样的结尾:
2|4|7 10|1|3