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

1. 正则解析

  • 正则例题
import  re
# string1 = """<div>静夜思 # 窗前明月光 # 疑是地上霜 # 举头望明月 # 低头思故乡 # </div>""" # print(re.findall('<div>(.*)</div>',string1,re.S)) #如果不使用re.S参数,则只在每一行内进行匹配,如果一行没有,就换下一行重新开始,不会跨行。 # 而使用re.S参数以后,正则表达式会将这个字符串作为一个整体,将“\n”当做一个普通的字符加入到这个字符串中,在整体中进行匹配  #匹配以i 开头的行 # string = '''fall in love with you # i love you very much # i love she # i love her''' # print(re.findall('^i.*',string,re.M)) #re.M表示将字符串视为多行,从而^匹配每一行的行首,$匹配每一行的行尾  #提取出python # key="javapythonc++php" # print(re.findall('python',key))  #提取出hello world # key="<html><h1>hello world<h1></html>" # print(re.findall('<h1>(.*)<h1>',key)[0])  #提取170 # string = '我喜欢身高为170的女孩' # print(re.findall('\d+',string))  #提取出hit. :贪婪模式:尽可能多的匹配数据 # key='bobo@hit.edu.com'#想要匹配到hit. # print(re.findall('h.*?\.',key)) 
  • 糗图下载案例
import requests
import re
import os

url = 'https://www.qiushibaike.com/pic/'
header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36' } # 创建一个存储图片的文件夹 dir_name = 'qiutu' if not os.path.exists(dir_name): os.mkdir(dir_name) response = requests.get(url=url, headers=header) # 获取字符串类型数据 page_text = response.text # print(page_text) # 使用正则进行数据解析(图片(img中src属性中存储的数据值)) src_list = re.findall('<div class="thumb">.*?<img src="(.*?)".*?>.*?</div>', page_text, re.S) # 拼接图片的url for src in src_list: # 获取了图片完整的url src = 'https:' + src # 下载图片(发请求) image_data = requests.get(url=src, headers=header).content fileName = src.split('/')[-1] filePath = dir_name + '/' + fileName with open(filePath, 'wb') as fp: fp.write(image_data) print('一张图片下载成功') 

2. xpath

2.1 格式

from lxml import etree
    两种方式使用:将html文档变成一个对象,然后调用对象的方法去查找指定的节点
    1)本地文件 tree = etree.parse(文件名) 2)网络文件 tree = etree.HTML(网页字符串) ret = tree.xpath(路径表达式) 

3.bs4解析

  • 环境安装
- windows
    1)打开文件资源管理器(文件夹地址栏中)
    2)地址栏上面输入 %appdata% 3)在这里面新建一个文件夹 pip 4)在pip文件夹里面新建一个文件叫做 pip.ini ,内容写如下即可 [global] timeout = 6000 index-url = https://mirrors.aliyun.com/pypi/simple/ trusted-host = mirrors.aliyun.com - linux 1cd ~ 2mkdir ~/.pip 3vi ~/.pip/pip.conf 4)编辑内容,和windows一模一样 - 需要安装:pip install bs4 bs4在使用时候需要一个第三方库,把这个库也安装一下 pip install lxml 
  • 用法
- from bs4 import BeautifulSoup
- 使用方式:可以将一个html文档,转化为BeautifulSoup对象,然后通过对象的方法或者属性去查找指定的内容 (1)转化本地文件: - soup = BeautifulSoup(open('本地文件'), 'lxml') (2)转化网络文件: - soup = BeautifulSoup('字符串类型或者字节类型', 'lxml') (3)打印soup对象显示内容为html文件中的内容

转载于:https://www.cnblogs.com/quqinchao/p/9794597.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值