用xpath来解析一般标签都很简单,因为大多数到可以找到class或者是id等属性,确定一类情况。但是<table>下有多个<tb>,<ul>下有多个<li>,而且还没有属性,类似这种:
解决办法:
第一种:用etree.HTML()
res = etree.HTML(response.txt)
table_list = res.xpath('//table[@class="xx"]')#这里的写法和response.xpath一般写法大同小异
#得到table_list这个列表,循环里再进行操作
for table in table_list:
item["link"]= table.xpath('.//td[@class="xx"]//a[1]//@href')
第二种:
res = etree.HTML(response.txt)
之后xpath可以自己不用写,在要爬取的网页中,摁F12,会出现下边这个:
选择,之后把光标移到你要解析的地方,比如我要爬取的数据有‘泉州’:
看到右侧出现对应的源代码,之后鼠标右键copy->copy xpath,就可以得到/html/body/div[6]/div[1]/ul/li[2]/strong/a,再稍微修改下就可以了。