目标:
抓取页面列表信息,并且获取第四个单元格得指定属性
代码:
import requests from lxml import etree resp = requests.get('http://xiu.iqixiu.cn/%7Bf24af5d0-4001-446d-82cd-7848fc4c9dc9%7D.htm') rst1 = resp.content.decode('GBK') html = etree.HTML(rst1) tr_list = html.xpath(r'//table/tbody/tr') for tr in tr_list[2:]: #获取这一行所有得文本内容 name_tr = tr.xpath('string()') #将这一行字符串处理,得到一个列表,这样我们可以得到比如地址,电话这些信息,直接用列表下标取出来就可以了 name_list = name_tr.replace(' ','').replace(' ','').split(' ') # print(tr.xpath('./td[4]/text()')[0]) #去除里面得文本属性值,并字符串处理。因为列表里得文本不全,这个文本属性值比较全 print(tr.xpath('./td[4]/@*')[-1].replace("'",''))
这里最重要得是tr.xpath('./td[4]/@*')[-1] 。知识点有
- ./表示从这一行开始得子节点,./就是当前开始
- @*表示选取所有属性
- [-1]表示列表得最后一个元素
- tr.xpath('./td[4]/@*')[-1]表示得是这一行下第五个单元格元素的所有属性组成的列表的最后一个值。