今天在用Python爬取簡歷時,想把教育經歷,工作經歷一起輸出來,即提取標簽及其子標簽下(多個標簽下)的text內容。
XPath提取多個標簽下的text內容
網上搜到的基本都是這篇文章:
xpath一次提取多個標簽下的內容
用的xpath string(.) 我試了一下,還是報錯。不得已準備用迭代的方式取出內容。后來發現是selector.xpath('//xxxx')取出來的應該是集合,這個地方應該是寫錯誤了,data要加上索引,即代碼應該是:
info = data[0].xpath('string(.)').extract()[0]
果然,修改后就得到了所有的文本內容。
再往文章上面看,作者寫了一個tag:
tags: [xpath,Python,xml,scrapy]
是因為這僅僅是在scrapy下這樣寫的嗎?正好這兩天也在看scrapy,我就試著用scrapy抓取這段數據。
簡書上的文章信息
發現仍是一樣,xpath('xxx')取出的就是集合,下一次操作時要么使用迭代,要么加上索引操作。
XPath提取數據塊(結構性數據)的技巧
選取點放在包含結構性數據循環的地方,即取決大的地方,再用xpath向內取數據。就是先抓大再抓小。
如爬取簡書上文章的信息,第一次selector要定在ul class="article-list thumbnails" 的li,<li></li>
中包含的就是一篇文章的信息。(注意li 的樣式有兩種 have-img 即有縮略圖的)
文章列表html
articles = selector.xpath('//ul[@class="article-list thumbnails"]/li')
for article in articles:
title = article.xpath('div/h4/a/text()').extract()
url = article.xpath('div/h4/a/@href').extract()
author = article.xpath('div/p/a/text()').extract()