Python爬虫解析数据

解析数据几种方式:
1.XPath解析数据:是一种小型的查询语言,是一门在XML文档中查找信息的语言,支持HTML,可通过元素和属性进行导航
         (XPath需要依赖XML的数据库)
使用XPath选取节点:(谷歌浏览器)
             1.nodename    选取此节点的所有子节点
             2./    从根节点进行选择
             3.//     从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置
             4. .       选取当前节点
             5.  ..        选取当前节点的父节点
             6./text()     获取当前路径下的文本内容
             7./@xxx     提取当前路径下标签的属性值
             8.|可选符      可选取若干个路径//p|//div,在当前路径下选取所有符合条件的p标签和div标签
             9.xpath('/body/div[1]')  ---->>>选取body下第一个div节点
            10.xpath('/body/div[last()]')   ---->>>选取body下最后一个div节点
            11.xpath('/body/div[ast()-1]')   ----->>>>选取body下倒数第二个div节点
            12.xpath('/body/div[position<3]')  ------->>>>选取body下前两个div节点
            13.xpath('/body/div[@class]')   ------>>>选取body下带有class属性的div节点
            14.xpath('/body/div[@class='main'])   ----->>>选取body下class属性为main的节点
            15.xpath('/body/div[price>35.00]')  ---->>>选取body下price元素大于35的div节点

2.Beautifulsoup解析数据:(是一个可以从HTML和XML文件中提取数据的标准库)
Beautifulsoup提取(解析)数据的常用方法:
                 1.bs.find(标签"div",属性class_="books")  ----->>>提取满足要求的首个数据,返回值类型是Tag(标签)类型
                 2.bs.find_all(标签"div",属性class_="books")   ----->>>提取满足要求的所有数据,返回值是Tag(标签)类型

CSS选择器:
      1.通过ID查找: bs.select('#abc')
      2.通过class查找: bs.select('.abc')
      3.通过属性查找: bs.select(a['class="abc"'])

Tag(标签)对象:
      1.获取标签 bs.title
      2.获取所有属性 bs.title.attrs
      3.获取单个属性的值 bs.div.get("class")
                      bs.div["class"]
                      bs.a["href"]

3.正则表达式:是一个特殊字符序列,能帮助用户快捷的检查一个字符串是否与某种模式匹配 ---->>>import re
s = "I study python every day"
re.match("I",s).group()  ---->>>从字符串开始位置去匹配"I",有的话返回"I",否则返回None
re.match("\w",s).group()  ----->>>从字符串开始位置匹配任意数字字母下划线,有的话返回具体字母数字下划线,否则返回None
re.match(".",s).group()  ----->>>从字符串开始位置匹配任意字符,有则返回具体任意值,否则返回None

re.search("study",s).group()  ---->>>从字符串任意位置去匹配,匹配第一个
re.search("s\w",s).group() ----->>>从任意位置匹配以s开头后面是字母数字下划线的字符串

re.findall("s",s)  ---->>>从任意位置匹配s字符,匹配多个(得到的结果是一个列表)
re.findall("P\w+.\d",s)  ----->>>从任意位置匹配以P开头后面是任意字符和任意字符以及十进制数字组成的字符串,返回的是一个列表
re.findall("P.+\d",s) ---->>>从任意位置匹配以P开头最后以数字结尾的字符串,返回的是一个列表

sub()作用是替换
print(re.sub("study","like",s))  ---->>>将s字符串中的study替换为like
print(re.sub("s\w+","like",s))  ---->>>将s字符串中以s开头任意字符匹配多次的字符串替换为like

4.pyquery库解析数据:是jQuery的python实现
   常见pyquery初始化方式:
                  1.字符串方式:
                     from pyquery import  PyQuery as pq
                     doc = pq(str)  ----->>>创建pyquery对象
                     print(doc("#main"))  ---->>>获取属性为main的节点
                     print(doc("a").attr("href")) ---->>>获取a标签当中的href标签的属性
                     print(doc("#main").html()) ---->>>获取html中main属性<div>开始到</div>结束
                     print(doc("#main").text())  ---->>>获取html文件中的文本内容
                     print(type(doc))

                  2.url方式:
                     from pyquery import PyQuery as pq
                     doc = pq("http://www.baidu.com",encoding="utf-8")
                     print(type(doc))
                     print(doc("title")) --->>>获取网址的title标签

                  3.文件
                      from pyquery import PyQuery as pq
                      doc = pq(filename="demo.html")
                      print(type(doc))

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@苇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值