爬取页面数据时,当返回数据为包含html文本的json数据时,可以使用lxml库来解析数据。
例如:html字符串文本如下
<table id="table1" cellspacing="0px">
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
</tr>
<tr>
<td>1</td>
<td>张三</td>
<td>11</td>
</tr>
<tr>
<td>2/td>
<td>李四</td>
<td>12</td>
</tr>
<tr>
<td>3</td>
<td>王五</td>
<td>13</td>
</tr>
<tr>
<td>4</td>
<td>马六</td>
<td>14</td>
</tr>
</table>
首先需要先引入lxml包下的etree
from lxml import etree
解析的具体代码如下:
html = '<tableid="table1"cellspacing="0px"><tr><th>编号</th><th>姓名</th><th>年龄</th></tr><tr><td>1</td><td>张三</td><td>11</td></tr><tr><td>2/td><td>李四</td><td>12</td></tr><tr><td>3</td><td>王五</td><td>13</td></tr><tr><td>4</td><td>马六</td><td>14</td></tr></table>'
content = etree.HTML(html)
rows = content.xpath('//table[@id="juniorchina_table"]/tr')[1:]
for row in rows:
id = row.xpath('./td[1]/text()')[0]
name = row.xpath('./td[2]/text()')[0]
age = row.xpath('./td[3]/text()')[0]
print(id, name, age)
代码对应的python版本为3.X
xpath语法参考:http://www.w3school.com.cn/xpath/xpath_syntax.asp
博客参考:https://blog.csdn.net/yjyq1990/article/details/53116809