我正在使用自动化脚本来从lan网站抓取计数器,现在我正在拔头发。

代码看起来像这样

<TR><td><p align="left" style="margin-left: 30;"><b>title</b></p></td><td><p>   </p></td>
</TR>
<TR><td><p align="left" style="margin-left: 40;">table one</p></td><td><p> Task&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;average </p></td>
</TR>
<TR><td><p align="left" style="margin-left: 40;"></p></td><td><p> number&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number </p></td>
</TR>
    <TR><td><p align="left" style="margin-left: 40;">1-1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C</p></td><td><p> 6490&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1 </p></td>
    </TR>
    <TR><td><p align="left" style="margin-left: 40;">2-4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C</p></td><td><p> 442&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2 </p></td>
    </TR>
    <TR><td><p align="left" style="margin-left: 40;">5-10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C</p></td><td><p> 44&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6 </p></td>
    </TR>
    <TR><td><p align="left" style="margin-left: 40;">11-20&nbsp;&nbsp;&nbsp;&nbsp;C</p></td><td><p> 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;15 </p></td>
    </TR>
    <TR><td><p align="left" style="margin-left: 40;">21-30&nbsp;&nbsp;&nbsp;&nbsp;C</p></td><td><p> 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;25 </p></td>
    </TR>
    <TR><td><p align="left" style="margin-left: 40;">31-50&nbsp;&nbsp;&nbsp;&nbsp;C</p></td><td><p> 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;40 </p></td>
    </TR>
    <TR><td><p align="left" style="margin-left: 40;">sum</p></td><td><p> 6982&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1 </p></td>
    </TR>


因此,在每个站点中我都有相同的单词重复,例如1-2、2-4、5-10等,我想提取“其下方”的数字,例如6490、442
按照特定的顺序,所以它看起来应该像

task - counter
1-1 = 6490
2-4 = 442


为此我用

import requests
from lxml import html

pageContent=requests.get(
 'http://x.html')
tree = html.fromstring(pageContent.content)
scraped = tree.xpath('//p/text()')
print scraped


女巫显然会打印出这样的内容
\ xa0 \ xa0 \ xa0 \ xa0 \ xa0task',u'1-1 \ xa0 \ xa0 \ xa0 \ xa0 \ xa0 \ xa0counter',u'6490

我被困住了...试图使用其他方法,但我失败了。

最佳答案

尝试这个。它将获取您上面提到的确切输出。 content是上面粘贴的html元素的容器。

from lxml.html import fromstring
root = fromstring(content)
for items in root.cssselect("tr")[3:]:
    data = [' '.join(item.text_content().split()).split(" ")[0] for item in items.cssselect("td")]
    print(' = '.join(data))


输出:

1-1 = 6490
2-4 = 442
5-10 = 44
11-20 = 3
21-30 = 2
31-50 = 1
sum = 6982

关于python - lxml网页抓取,特定单词提取,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48498910/

10-11 18:12