xpath提取html属性,xpath提取 html标签的文字内容
前言:
做爬蟲的過程中經常需要對html標簽的文字內容進行提取,有幾種情況 1.提取屬性的值,2.提取標簽的值,3.提取段落的所有文字
本文用的是 scrapy 的框架,用 response 做響應
1.提取屬性的值
response.xpath("//a/@title").get(),可以直接得到 title 的值為:這是一個標題
注:get 方法是等同于extract()[0],getall 方法等同于extract()
官方文檔1.5以后推薦使用 get 系列方法代替原來的 extract 系列方法
兩種方法可以同時使用,看個人喜好
2.提取標簽的值
這才是標題
response.xpath("//a/text()").get(),可以得到 a 標簽的值:這才是標題
3.提取段落所有文字
左青龍
右白虎
老牛在當中
龍頭在胸口
response.xpath("//div[@class='test']").get()
這種方式可以得到值為 test 的 div 標簽下的所有標簽組,即:
左青龍
右白虎
老牛在當中
龍頭在胸口
瀏覽器展示是沒問題的,但是我們需要純文字用于匹配
為了去除標簽,需要加一個 string 的方法,即:
response.xpath("string(//div[@class='test']")).get(),這樣可以獲取純文字:
左青龍右白虎老牛在當中龍頭在胸口
4.html 類型的字符串清除 html 標簽
這是對3的補充,給個栗子 某次返回直接給一個html類型的字符串,記住是字符串,不是從response獲取到的 返回json
{"title": 這是標題,
"content":"
左青龍
右白虎
老牛在當中
龍頭在胸口
"}這時候response.body是一個json結構體,直接用xpath不行的,所以需要做一個轉換
import json
from scrapy import Selector
json_content = json.loads(response.body)["content"]
content = Selector(text=json_content)
content_text = content.xpath("string(.)").get()
因為只有 Selector 才有xpath方法,所以需要把 html 類型的字符串做一次轉換才能用 string 方法
總結
以上是生活随笔為你收集整理的xpath提取html属性,xpath提取 html标签的文字内容的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于Android的校园二手商品交易平台
- 下一篇: 中考计算机应用技术有前途吗,被中考“淘汰