【发布时间】:2018-07-08 00:14:09
【问题描述】:
我正在使用自动化我的脚本来从 lan-website 上抓取计数器,我现在正在拉扯我的头发。
代码如下所示
<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
witch 显然打印出这样的东西 \xa0\xa0\xa0\xa0\xa0task ', u'1-1\xa0\xa0\xa0\xa0\xa0\xa0counter', u' 6490
我被困住了...尝试使用其他方法但我失败了。
【问题讨论】:
-
我建议使用
beautifulsoup而不是 lxml - 它有更好的 unicode 处理和标签/值提取更容易。
标签: python web-scraping html-parsing lxml