python爬虫----数据提取 - 前端笔记-#爬虫数据提取 数据响应之后数据分为2种 1.json字符串----现在的单页应用都是通过ajax发送请求获取json数据,渲染到页面中的 解析:jso...

学习笔记

点滴记忆
回忆过往
首页>> web后端 >>python爬虫----数据提取 - 前端笔记
2020-4-5
分类: web后端

python爬虫----数据提取

文章作者:痴迷

# 爬虫数据提取 数据响应之后数据分为2种 1.json字符串----现在的单页应用都是通过ajax发送请求获取json数据,渲染到......

# 爬虫数据提取

数据响应之后数据分为2种

1.json字符串----现在的单页应用都是通过ajax发送请求获取json数据,渲染到页面中的
解析:json模板,jsonpath模块解析

2.html字符串----直接返回的html字符串 (个人感觉xpath语法定位精确很麻烦,推荐pyquery模块)
解析:lxml模块(xpath语法),pyQuery模板(类似jQuery,css3选择器一样,直接选择元素)


# jsonpath 模块的应用

1.安装 jsonpath模块
pip install jsonpath

2.jsonpath模块的提取方法
from jsonpath import jsonpath
ret = jsonpath(要提取的数据, 'jsonpath语法规则')

3.jsonpath语法股则
  $       根目录
  @       现行节点
  . or [] 取子节点
  ..      不管什么位置,选取所有符合条件的数据
  *       匹配所有元素节点

4.jsonpath模块的实例
book_dict = {
  "store": {
    "book": [
      { "category""reference",
        "author""Nigel Rees",
        "title""Sayings of the Century",
        "price"8.95
      },
      { "category""fiction",
        "author""Evelyn Waugh",
        "title""Sword of Honour",
        "price"12.99
      },
      { "category""fiction",
        "author""Herman Melville",
        "title""Moby Dick",
        "isbn""0-553-21311-3",
        "price"8.99
      },
      { "category""fiction",
        "author""J. R. R. Tolkien",
        "title""The Lord of the Rings",
        "isbn""0-395-19395-8",
        "price"22.99
      }
    ],
    "bicycle": {
      "color""red",
      "price"19.95
    }
  }
}

from jsonpath import jsonpath

print(jsonpath(book_dict, '$..author')) # 如果取不到将返回False

5.jsonpath模块的使用

json文件网址:https://blog.dbsgw.cn/dz.json 为了是json数据的处理,直接使用get方式了

import requests
import json
import jsonpath

url = 'https://blog.dbsgw.cn/dz.json'
headers = {
  "user-agent""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
}
= requests.get(url, headers=headers)

# print(r.content.decode())

# 把json格式字符串转换为python对象
= json.loads(r.content.decode())

# aa = jsonpath.jsonpath(a, '$..name') # 获取根目录下 所有的 name属性(也就是获取根目录下所有的 名称)
aa = jsonpath.jsonpath(a, '$..A..name'#获取根目录下的所有  A字段下面的  所有 name
print(aa)


# pyquery的模块的应用(这里不讲lxml,毕竟css3选择器对 前端人员来说简单些)

1.安装pyquery

pip install pyquery

2.pyquery的使用

from pyquery import PyQuery as pq #引入       注意 pyQuery 中的 Q 一定要大写
html = '<div><h1></h1></div>'   #数据
doc = pq(html)  #转换为pyquery能处理的数据
print(doc('h2'))  #选取h2标签打印输出

3.pyquery的基本语法

.text() #是获取文本内容
.items() #获取元素当前每一项(类似python中的items())
.attr('href')  #获取属性上面的 href

4.pyquery实例

import requests
from pyquery import PyQuery as pq
url = 'https://blog.dbsgw.cn/'
headers = {
  "user-agent""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
}
= requests.get(url, headers=headers)
doc = pq(r.content)
# print(doc('a')) # 获取所有的a链接

for i in doc('a').items(): #切记一定要加 items()在循环  ,不然显示的不是html元素
  print(i.attr('href')) #获取所有a链接 上的链接
  print(i.text())  #获取所有a链接里面的文字

print(doc('.content article'))  # 选择所以文章


×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

打赏作者
版权所有,转载注意明处:前端笔记 » python爬虫----数据提取

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)