爬虫实战零点书屋热门小说精选
Posted ZSYL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫实战零点书屋热门小说精选相关的知识,希望对你有一定的参考价值。
前言
保存零点书屋热门小说精选中的书名和链接到 excel。
分析html
- 打开 零点书屋
- 按F12进入开发者模式,点击图片的选中区域,之后可以在网页中定位代码位置。
- 接着分析 HTML 文档内容,确定要抽取标记的位置。热门小说精选的书名及链接都被包含在
<li class=”new_2”>
标签下的。
HTML源代码获取
# 爬取零点书屋热门小说
import requests, openpyxl
from bs4 import BeautifulSoup
# 获取页面源代码
def getHtml(url):
try:
# 用户代理
headers = {'User_Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'}
# 获取请求对象
r = requests.get(url, headers=headers, timeout=3)
# 判断返回请求状态码是否为200,反之产生一个HttpError异常
r.raise_for_status()
# 规范字符编码
r.encoding = r.apparent_encoding
# 打印状态码
print(r.status_code)
# 返回网页源代码
return r.text
except Exception as e:
print(e.__traceback__)
return '访问URL失败'
解析网页内容
- 使用的是findAll() 方法,获取指定标签的内容(所有的小说信息都在
<li class_='new_2'>
标签下)
soup.find_all('li', class_='new_2')
- 我们所需的内容是在
<li>
下的<a>
标签中。
# 解析页面内容,获取需要内容
def getInfo(text):
dataSet = []
# 获取解析对象
soup = BeautifulSoup(text, 'html.parser')
# 获取所有<li class='new_2'>
li_tags = soup.find_all('li', class_='new_2')
for item in li_tags:
# 获取下面超链接标签
a = item.find('a')
# 获取小说名字
a_name = a.string
# 获取链接
a_href = 'https://www.02345.com/'+a['href']
# print(a_name+'---'+a_href)
dataSet.append([a_name, a_href])
# 返回数据
return dataSet
输出结果
输出结果到excel表格中
# 保存数据
def saveData(dataSet):
# 获取工作簿
wb = openpyxl.Workbook()
# 获取工作表
ws = wb.active
# 绘制表头
ws.append(['小说名称', '链接'])
# 遍历添加数据
for data in dataSet:
ws.append(data)
# 保存excel
wb.save('story.xlsx')
完整代码
# 爬取零点书屋热门小说
import requests, openpyxl
from bs4 import BeautifulSoup
# 获取页面源代码
def getHtml(url):
try:
# 用户代理
headers = {'User_Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'}
# 获取请求对象
r = requests.get(url, headers=headers, timeout=3)
# 判断返回请求状态码是否为200,反之产生一个HttpError异常
r.raise_for_status()
# 规范字符编码
r.encoding = r.apparent_encoding
# 打印状态码
print(r.status_code)
# 返回网页源代码
return r.text
except Exception as e:
print(e.__traceback__)
return '访问URL失败'
# 解析页面内容,获取需要内容
def getInfo(text):
dataSet = []
# 获取解析对象
soup = BeautifulSoup(text, 'html.parser')
# 获取所有<li class='new_2'>
li_tags = soup.find_all('li', class_='new_2')
for item in li_tags:
# 获取下面超链接标签
a = item.find('a')
# 获取小说名字
a_name = a.string
# 获取链接
a_href = 'https://www.02345.com/'+a['href']
# print(a_name+'---'+a_href)
dataSet.append([a_name, a_href])
# 返回数据
return dataSet
# 保存数据
def saveData(dataSet):
# 获取工作簿
wb = openpyxl.Workbook()
# 获取工作表
ws = wb.active
# 绘制表头
ws.append(['小说名称', '链接'])
# 遍历添加数据
for data in dataSet:
ws.append(data)
# 保存excel
wb.save('story.xlsx')
if __name__ == '__main__':
url = 'https://www.02345.com/'
text = getHtml(url)
print(text)
dataSet = getInfo(text)
saveData(dataSet)
结果展示
感谢努力,一起加油!
以上是关于爬虫实战零点书屋热门小说精选的主要内容,如果未能解决你的问题,请参考以下文章
python爬虫实战—喜欢下载什么小说,由自己说了算,超详细小说下载爬虫教程
2017.08.17 Python爬虫实战之BS4获取起点小说信息