Python 獲取網頁標籤中的全部文本的幾種方法

上一篇文章講述了一下scrapy框架的安裝與簡單使用,今天呢,就基於scrapy框架來給大家講述一下如何獲取網頁標籤中的全部文本。

首先創建一個scrapy框架項目,至於如何創建,不知道的小夥伴們請看我的上一篇文章。

目標是百度貼吧,目標網址:https://tieba.baidu.com/p/4685013359

要求是獲取發的帖子,當然只要文本。

打開爬蟲文件,開始爬取內容

# -*- coding: utf-8 -*-
import scrapy

import re

class XiaoshuospiderSpider(scrapy.Spider):
    name = 'xiaoshuoSpider'
    allowed_domains = ['tieba.baidu.com']
    start_urls = ['https://tieba.baidu.com/p/4685013359']

    def parse(self, response):

 爬取內容,有四種方式

1.使用正則去掉標籤內容中的標籤,只留下文本

# 找到每一層帖子
floor_list = response.xpath('//div[@class="l_post l_post_bright j_l_post clearfix  "]')
for floor in floor_list:
    # 找到存放帖子內容的標籤
    content_list = floor.xpath('.//div[@class="d_post_content j_d_post_content "]').extract()[0]
    # 正則 匹配以下內容 \s 空格  \n換行  <.*?>所有的標籤 
    pattern = re.compile(r'\s|\n|<.*?>', re.S)
    #將匹配到的內容用空替換,即去除匹配的內容,只留下文本
    content = pattern.sub('', content_list)
    print(content)

content_list輸出的結果爲下圖,使用正則去除標籤,空格,換行等

結果爲

2.  /text()和//text()

# 獲取標籤下的文本
content_list = response.xpath('//div[@class="d_post_content j_d_post_content "]/text()').extract()
content = ''
for value in content_list:
    content += value.strip(' ')
print(content)

結果爲

在這裏使用/text()與//text()的結果相同,因爲包含內容的標籤下的子標籤當中沒有文本

/text()獲取標籤的文本,  //text()獲取標籤以及子標籤下的文本

3.使用xpath('string(.)'),這種方式用來獲取所有文本並拼接

floor_list = response.xpath('//div[@class="l_post l_post_bright j_l_post clearfix  "]')
for floor in floor_list:    
    content= floor.xpath('.//div[@class="d_post_content j_d_post_content "]').xpath('string(.)').extract()[0]
    content = content.strip(' ')
    print(content)

結果爲

4.獲取最外面標籤,遍歷所有子標籤,獲取標籤文本

floor_list = response.xpath('//div[@class="l_post l_post_bright j_l_post clearfix  "]')
for floor in floor_list:    
    # 獲取標籤下的文本
    content_list = floor.xpath('.//div[@class="d_post_content j_d_post_content "]/text()').extract()
    content = ''
    for value in content_list:
        content += value.strip(' ')
    print(content)

結果爲

 

 

以上就是獲取文本的幾種方法

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章