這兩天在研究Scrapy,在遇到用Xpath提出時,需要有Chrome的XPath helper,但老是出現(xiàn)錯誤。廢話少說,還是先把測試網(wǎng)頁保存到本地,逐步的測試提取。
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)結(jié)果為: 這是第一條信息 這是第二條信息 這是第三條信息
#提取屬性link = selector.xpath('//a/@href')for each in link: print (each)結(jié)果為: http://jikexueyuan.com http://jikexueyuan.com/sourse/
#提取titletitle = selector.xpath('//a/@title')print (title[0])結(jié)果為: 極客學(xué)院課程庫
# 以相同的字符開頭 starts-with(@屬性名稱,屬性字符相同部分)content = selector.xpath('//div[starts-with(@id,"test")]/text()')for each in content: print (each)結(jié)果為: 大家好! 需要的內(nèi)容1 需要的內(nèi)容2 需要的內(nèi)容3 美女,
#標(biāo)簽套標(biāo)簽,取出所有的標(biāo)簽data = selector.xpath('//div[@id="test-3"]')[0]info = data.xpath('string(.)')info=str(info)# info為<class 'lxml.etree._ElementUnicodeResult'>,轉(zhuǎn)為字符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'>,轉(zhuǎn)為字符content=" ".join(info.split())print (content)結(jié)果為: 美女, 你的微信是多少? 我左青龍, 右白虎, 上朱雀, 下玄武。 老牛在當(dāng)中, 龍頭在胸口。
注:這里我將list轉(zhuǎn)為str。網(wǎng)上有許多其他方法加extract()我嘗試后,發(fā)現(xiàn)均出錯。 另外,發(fā)現(xiàn)網(wǎng)上的代碼有問題。
data = selector.xpath('//div[@id="test3"]')info = data.xpath('string(.)').extract()[0]這樣,就可以把“我左青龍,右白虎,上朱雀,下玄武。老牛在當(dāng)中,龍頭在胸口”整個句子提取出來,賦值給info變量。參考如下網(wǎng)頁,非常感謝: 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
|
新聞熱點
疑難解答