我正在使用自动化脚本来从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 average </p></td>
</TR>
<TR><td><p align="left" style="margin-left: 40;"></p></td><td><p> number number </p></td>
</TR>
<TR><td><p align="left" style="margin-left: 40;">1-1 C</p></td><td><p> 6490 1 </p></td>
</TR>
<TR><td><p align="left" style="margin-left: 40;">2-4 C</p></td><td><p> 442 2 </p></td>
</TR>
<TR><td><p align="left" style="margin-left: 40;">5-10 C</p></td><td><p> 44 6 </p></td>
</TR>
<TR><td><p align="left" style="margin-left: 40;">11-20 C</p></td><td><p> 3 15 </p></td>
</TR>
<TR><td><p align="left" style="margin-left: 40;">21-30 C</p></td><td><p> 2 25 </p></td>
</TR>
<TR><td><p align="left" style="margin-left: 40;">31-50 C</p></td><td><p> 1 40 </p></td>
</TR>
<TR><td><p align="left" style="margin-left: 40;">sum</p></td><td><p> 6982 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/