第一种正则表达式(安装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库)
"""
作者太困了,先睡觉,后续补
"""