爬虫项目数据解析方式

数据解析

requests实现数据爬取的流程

  1. 指定url
  2. 基于requests模块发起请求
  3. 获取响应对象中的数据
  4. 进行持久化存储

因为大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据,所以,我们的数据爬取的流程可以修改为:

  1. 指定url
  2. 基于requests模块发起请求
  3. 获取响应中的数据
  4. 数据解析
  5. 进行持久化存储

正则解析

常用的正则表达式回顾:

   单字符:
        . : 除换行以外所有字符
        [] :[aoe] [a-w] 匹配集合中任意一个字符
        \d :数字  [0-9]
        \D : 非数字
        \w :数字、字母、下划线、中文
        \W : 非\w
        \s :所有的空白字符包,括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
        \S : 非空白
    数量修饰:
        * : 任意多次  >=0
        + : 至少1次   >=1
        ? : 可有可无  0次或者1次
        {m} :固定m次 hello{3,}
        {m,} :至少m次
        {m,n} :m-n次
    边界:
        $ : 以某某结尾
        ^ : 以某某开头
    分组:
        (ab)
    贪婪模式: .*
    非贪婪(惰性)模式: .*?

    re.I : 忽略大小写
    re.M :多行匹配
    re.S :单行匹配

    re.sub(正则表达式, 替换内容, 字符串)

re模块练习:

import re
#提取出python
key="javapythonc++php"
re.findall(‘python‘,key)[0]
--------------------------------------------------------------------------------------------------------------------------
#提取出hello world
key="<html><h1>hello world<h1></html>"
re.findall(‘<h1>(.*)<h1>‘,key)[0]
--------------------------------------------------------------------------------------------------------------------------
#提取170
string = ‘我喜欢身高为170的女孩‘
re.findall(‘\d+‘,string)
--------------------------------------------------------------------------------------------------------------------------
#提取出http://和https://
key=‘http://www.baidu.com and https://boob.com‘
re.findall(‘https?://‘,key)
--------------------------------------------------------------------------------------------------------------------------
#提取出hello
key=‘lalala<hTml>hello</HtMl>hahah‘ #输出<hTml>hello</HtMl>
re.findall(‘<[Hh][Tt][mM][lL]>(.*)</[Hh][Tt][mM][lL]>‘,key)
--------------------------------------------------------------------------------------------------------------------------
#提取出hit.
key=‘[email protected]‘#想要匹配到hit.
re.findall(‘h.*?\.‘,key)
--------------------------------------------------------------------------------------------------------------------------
#匹配sas和saas
key=‘saas and sas and saaas‘
re.findall(‘sa{1,2}s‘,key)
--------------------------------------------------------------------------------------------------------------------------
#匹配出i开头的行
string = ‘‘‘fall in love with you
i love you very much
i love she
i love her‘‘‘

re.findall(‘^.*‘,string,re.M)
--------------------------------------------------------------------------------------------------------------------------
#匹配全部行
string1 = """<div>静夜思
窗前明月光
疑是地上霜
举头望明月
低头思故乡
</div>"""

re.findall(‘.*‘,string1,re.S)

项目爬取练习:

import requests
import re
import os
headers={
     ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.8 Safari/537.36‘
}

url=‘https://www.qiushibaike.com/pic/page/%d‘

dirname=‘./qiushiTU‘
if not os.path.exists(dirname):
    os.mkdir(dirname)

for page in range(1,3):
    print(‘正在爬取第{}页的图片数据‘.format(page))
    new_url=format(url%page)

    page_text=requests.get(url=new_url,headers=headers).text
    ex=‘<div class="thumb">.*?<img src="(.*?)" alt=.*?</div>‘
    img_src_list=re.findall(ex,page_text,re.S)
    for img_src in img_src_list:
        img_src=‘https:‘+img_src
        img_name=img_src.split(‘/‘)[-1]
        img_path=dirname+‘/‘+img_name
        request.urlretrieve(img_src,img_path)
        print(img_name,‘下载成功‘)

Xpath解析

xpath表达式

属性定位:
    #找到class属性值为song的div标签
    //div[@class="song"]
层级&索引定位:
    #找到class属性值为tang的div的直系子标签ul下的第二个子标签li下的直系子标签a
    //div[@class="tang"]/ul/li[2]/a
    #索引值是从1开始
逻辑运算:
    #找到href属性值为空且class属性值为du的a标签
    //a[@href="" and @class="du"]
模糊匹配:
    //div[contains(@class, "ng")]
    //div[starts-with(@class, "ta")]
取文本:
    # /表示获取某个标签下的文本内容,我们必须从根标签进行定位
    # //表示获取某个标签下的文本内容和所有子标签下的文本内容,我们可以从任意位置标签定位
    //div[@class="song"]/p[1]/text()
    //div[@class="tang"]//text()
取属性:
    //div[@class="tang"]//li[2]/a/@href

    在xpath表达式中非最左侧的/和//的区别?       

原文地址:https://www.cnblogs.com/sikuaiqian/p/11306323.html

时间: 2024-10-07 19:25:49

爬虫项目数据解析方式的相关文章

05 Python网络爬虫的数据解析方式

一.爬虫数据解析的流程 1.指定url 2.基于requests模块发起请求 3.获取响应中的数据 4.数据解析 5.进行持久化存储 二.解析方法 (1)正则解析 (2)bs4解析 (3)xpath解析 1. 正则解析 常用正则表达式 1 单字符: 2 . : 除换行以外所有字符 3 [] :[aoe] [a-w] 匹配集合中任意一个字符 4 \d :数字 [0-9] 5 \D : 非数字 6 \w :数字.字母.下划线.中文 7 \W : 非\w 8 \s :所有的空白字符包,括空格.制表符.

Python网络爬虫之三种数据解析方式

引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据解析.因为大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据.因此,本次课程中会给大家详细介绍讲解三种聚焦爬虫中的数据解析方式.至此,我们的数据爬取的流程可以修改为: 指定url 基于requests模块发起请求 获取响应中的数据 数据解析

《Python网络爬虫之三种数据解析方式?

回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据解析.因为大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据.因此,本次课程中会给大家详细介绍讲解三种聚焦爬虫中的数据解析方式.至此,我们的数据爬取的流程可以修改为: 指定url 基于requests模块发起请求 获取响应中的数据 数据解析 进行持

05,Python网络爬虫之三种数据解析方式

回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据解析.因为大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据.因此,本次课程中会给大家详细介绍讲解三种聚焦爬虫中的数据解析方式.至此,我们的数据爬取的流程可以修改为: 指定url 基于requests模块发起请求 获取响应中的数据 数据解析 进行持

爬虫学习 05.Python网络爬虫之三种数据解析方式

爬虫学习 05.Python网络爬虫之三种数据解析方式 引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据解析.因为大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据.因此,本次课程中会给大家详细介绍讲解三种聚焦爬虫中的数据解析方式.至此,我们的数据爬取的流程可以修改为: 指定url 基于r

Python爬虫的三种数据解析方式

数据解析方式 - 正则 - xpath - bs4 数据解析的原理: 标签的定位 提取标签中存储的文本数据或者标签属性中存储的数据 正则 # 正则表达式 单字符: . : 除换行以外所有字符 [] :[aoe] [a-w] 匹配集合中任意一个字符 \d :数字 [0-9] \D : 非数字 \w :数字.字母.下划线.中文 \W : 非\w \s :所有的空白字符包,括空格.制表符.换页符等等.等价于 [ \f\n\r\t\v]. \S : 非空白 数量修饰: * : 任意多次 >=0 + :

25-2 三种数据解析方式

引言:回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据解析.因为大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据.因此,本次课程中会给大家详细介绍讲解三种聚焦爬虫中的数据解析方式.至此,我们的数据爬取的流程可以修改为: 指定url 基于requests模块发起请求 获取响应中的数据 数据解析

爬虫02 /数据解析

目录 爬虫02 /数据解析 1. 数据解析概述 2. 正则实现的数据解析 3. bs4实现数据解析 4. xpath解析 总结: 爬虫02 /数据解析 1. 数据解析概述 什么是数据解析,数据解析可以干什么? 概念:就是将一组数据中的局部数据进行提取. 作用:使用来实现聚焦爬虫 数据解析的通用原理 问题:html展示的数据可以存储在哪里? 标签之中 属性中 1.标签定位 2.取文本或者取属性 数据解析的常用方法 re bs4 xpath pyquery 2. 正则实现的数据解析 需求:http:

python网络爬虫数据中的三种数据解析方式

一.正则解析 常用正则表达式回顾: 单字符: . : 除换行以外所有字符 [] :[aoe] [a-w] 匹配集合中任意一个字符 \d :数字 [0-9] \D : 非数字 \w :数字.字母.下划线.中文 \W : 非\w \s :所有的空白字符包,括空格.制表符.换页符等等.等价于 [ \f\n\r\t\v]. \S : 非空白 数量修饰: * : 任意多次 >=0 + : 至少1次 >=1 ? : 可有可无 0次或者1次 {m} :固定m次 hello{3,} {m,} :至少m次 {m