数据解析详解

第一种正则表达式(安装re库)

#对QQ头像_图片头像_好看的头像_QQ头像图片大全 - 头像网 (qqw21.com)图片爬取

import requests
import re

# 先对本页面数据获取,然后解析图片数据链接
url = 'https://m.qqw21.com/'
# UA伪装
header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.67'
}
img_data = requests.get(url=url, headers=header).text
# 通过抓包工具,获取对应re表达式的格式
ex = '<li><a title.*?img src="(.*?)" alt="'
# 开始匹配,re.s表示.可以将换行符也匹配
img = re.findall(ex, img_data, re.S)
number_name = 1
# 循环处理得到的每一个图片的链接
for scr in img:
    scr_url = str(scr)  # 链接格式化
    scr_url_data = requests.get(url=scr_url, headers=header).content  # 获取链接对应的数据
    scr_name = str(number_name) + '.jpg'  # 图片存储的路径
    with open(scr_name, 'wb') as fp:
        fp.write(scr_url_data)
        print('爬取成功')
    number_name += 1

第二种bs4(安装bs4库)

#爬取诗词名句网(三国演义小说目录及其内容)

主要使用的是BeautifulSoup方法

import requests
from bs4 import BeautifulSoup

url = 'https://www.shicimingju.com/book/sanguoyanyi.html'
# UA伪装
header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.67'
}
# 首先获取页面的数据内容
response = requests.get(url=url, headers=header)
encoding_ = response.encoding  # 获取编码格式
page_ = response.text  # 获取响应数据
with open('三国演义.html', 'w', encoding=encoding_) as fp:
    fp.write(page_)
    # print('页面数据保存成功!')
# 打开本地文档
fp = open('三国演义.html', 'r', encoding='utf-8')
# 以上第一步得到页面数据,然后开始用BeautifulSoup方法解析
soup = BeautifulSoup(fp, 'lxml')  # 将本地的文档加载到BeautifulSoup对象中
# 打开一会要写入的txt
fp2 = open('三国演义.txt', 'w', encoding='utf-8')
# 通过抓包工具定位目录所在位置
for i in soup.select('.book-mulu>ul>li'):  # .代表class
    # <a href="/book/sanguoyanyi/1.html">第一回·宴桃园豪杰三结义  斩黄巾英雄首立功</a>

    data_url = 'https://www.shicimingju.com/' + i.a['href']

    response2 = requests.get(url=data_url, headers=header).content.decode('utf-8')
    # 将互联网的文档加载到BeautifulSoup对象中
    soup2 = BeautifulSoup(response2, 'lxml')
    # 定位标签 并且获取文本内容
    tag_ = soup2.find('div', class_='chapter_content').text
    # 获取章节名字
    String_name = i.a.string
    fp2.write(String_name + ':' + tag_ + '\n')
    print(String_name + '写入成功')

第三种xpath(最常用的一种需要安装lxml库)

"""

作者太困了,先睡觉,后续补

"""

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

寄给画家

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

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

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

打赏作者

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

抵扣说明:

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

余额充值