3.数据解析

本文介绍了数据解析的分类和原理,包括正则表达式和BeautifulSoup(bs4)的解析方法。讲解了bs4的环境安装及对象实例化,并提供了实战例子,如爬取三国演义章节、58同城二手房信息和全国城市名称。此外,还探讨了xpath解析,解释了其原理,如何实例化etree对象,并通过实例展示了如何高效抓取网页数据。
摘要由CSDN通过智能技术生成

1.数据解析分类:

正则
bs4(只有python中能用)
xpath(重点)

2.数据解析原理:

解析的局部的文本内容都会在标签之间或标签的属性中进行存储
1.进行指定标签的定位
2.标签或标签对应的属性中存储的数据值进行提取(解析)

3.正则解析:

# 正则表达式

# 贪婪匹配.*
# 和懒惰匹配.*?


# import re
#
# str1 = '<div class="jay">周杰伦</div><div class="jj">林俊杰</div>'
# print(re.findall(r'<div class=".*?">(.*?)</div>', str1))  # ['周杰伦', '林俊杰']
#
# # findall:匹配字符串中所有符合正则的内容
# str2 = 'bob 的电话是10023 pop的电话是12200'
# print(re.findall(r'\d', str2))  # ['1', '0', '0', '2', '3', '1', '2', '2', '0', '0']
# print(re.findall(r'\d+', str2))  # ['10023', '12200']
# #finditer:匹配字符串中所有符合正则的内容【返回的是迭代器】从迭代器中拿内容,需要.group()
# #最重要的
# it=re.finditer(r'\d+', str2)#<callable_iterator object at 0x0000000002213B70>
# for i in it:
#     print(i)#<_sre.SRE_Match object; span=(8, 13), match='10023'>
#     print(i.group())#10023  12200
# #search,找到一个结果就返回,结果为match对象,拿数据需要.group()
# s=re.search(r'\d+', str2)
# print(s.group())#10023
#
# #预加载正则表达式,能提高一些效率,一个正则在多个地方使用
# obj=re.compile(r'\d+')
# ret=obj.finditer(str2)
# print(ret)#<callable_iterator object at 0x0000000001E93940>
# print(s.group())

import re
str="""
<div class='jay'><span id='1'>周杰伦</span></div>
<div class='jj'><span id='2'>林俊杰</span></div>
<div class='jolin'><span id='3'>蔡依林</span></div>
<div class='sylar'><span id='4'>郭麒麟</span></div>
<div class='tory'><span id='5'>李铁</span></div>
"""
# obj=re.compile(r"<div class='.*?'><span id='\d+'>.*?</span></div>",re.S)#re.S 让.能匹配换行符
obj=re.compile(r"<div class='(?P<class>.*?)'><span id='(?P<id>\d+)'>(?P<wahehe>.*?)</span></div>",re.S)#加上(?P<abc>)提取内容

res=obj.finditer(str)

for it in res:
    print(it.group("wahehe"))
    print(it.group("id"))
    print(it.group("class"))
# 周杰伦
# 1
# jay
# 林俊杰
# 2
# jj
# 蔡依林
# 3
# jolin
# 郭麒麟
# 4
# sylar
# 李铁
# 5
# tory

实战练习:

图片爬取-需求:糗事百科的热图爬取
import requests
import json
import re

if __name__ =="__main__":

    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
    }

    #图片存储
    # url
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值