这两天在研究Scrapy,在遇到用Xpath提出时,需要有Chrome的XPath helper,但老是出现错误。废话少说,还是先把测试网页保存到本地,逐步的测试提取。
selector.xpath提取后为list
#提取单个文本content = selector.xpath('//div[@id="test-0"]/text()')print (content)[‘大家好!’]
#提取多个文本content = selector.xpath('//ul[@id="useful"]/li/text()')print (content)for each in content: print (each)结果为: 这是第一条信息 这是第二条信息 这是第三条信息
#提取属性link = selector.xpath('//a/@href')for each in link: print (each)结果为: http://jikexueyuan.com http://jikexueyuan.com/sourse/
#提取titletitle = selector.xpath('//a/@title')print (title[0])结果为: 极客学院课程库
# 以相同的字符开头 starts-with(@属性名称,属性字符相同部分)content = selector.xpath('//div[starts-with(@id,"test")]/text()')for each in content: print (each)结果为: 大家好! 需要的内容1 需要的内容2 需要的内容3 美女,
#标签套标签,取出所有的标签data = selector.xpath('//div[@id="test-3"]')[0]info = data.xpath('string(.)')info=str(info)# info为<class 'lxml.etree._ElementUnicodeResult'>,转为字符content=" ".join(info.split())print (content)data = selector.xpath('//div[@id="tiger"]')[0]info = data.xpath('string(.)')info=str(info)# info为<class 'lxml.etree._ElementUnicodeResult'>,转为字符content=" ".join(info.split())print (content)结果为: 美女, 你的微信是多少? 我左青龙, 右白虎, 上朱雀, 下玄武。 老牛在当中, 龙头在胸口。
注:这里我将list转为str。网上有许多其他方法加extract()我尝试后,发现均出错。 另外,发现网上的代码有问题。
data = selector.xpath('//div[@id="test3"]')info = data.xpath('string(.)').extract()[0]这样,就可以把“我左青龙,右白虎,上朱雀,下玄武。老牛在当中,龙头在胸口”整个句子提取出来,赋值给info变量。参考如下网页,非常感谢: http://blog.csdn.net/betabin/article/details/24392369 http://blog.csdn.net/skyeyesxy/article/details/50838003 http://blog.chinaunix.net/uid-13869856-id-5747417.html https://segmentfault.com/q/1010000006053119/a-1020000006053611
新闻热点
疑难解答