首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >看完python这段爬虫代码,java流

看完python这段爬虫代码,java流

作者头像
py3study
发布于 2020-01-22 04:19:39
发布于 2020-01-22 04:19:39
79700
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

哈哈,其实很简单,寥寥几行代码网页爬一部小说,不卖关子,立刻开始。

首先安装所需的包,requests,BeautifulSoup4

控制台执行

pip install requests

pip install BeautifulSoup4

如果不能正确安装,请检查你的环境变量,至于环境变量配置,在这里不再赘述,相关文章有很多。

两个包的安装命令都结束后,输入pip list

可以看到,两个包都成功安装了。

好的,我们立刻开始编写代码。

我们的目标是抓取这个链接下所有小说的章节 https://book.qidian.com/info/1013646681#Catalog

我们访问页面,用chrome调试工具查看元素,查看各章节的html属性。我们发现所有章节父元素是<ul class="cf">这个元素,章节的链接以及标题,在子<li>下的<a>标签内。

那我们第一步要做的事,就是要提取所有章节的链接。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'用于进行网络请求'
import requests


chapter = requests.get("https://book.qidian.com/info/1013646681#Catalog")
print(chapter.text)

页面顺利的请求到了,接下来我们从页面中抓取相应的元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'用于进行网络请求'
import requests
'用于解析html'
from bs4 import BeautifulSoup


chapter = requests.get("https://book.qidian.com/info/1013646681#Catalog")

ul_bs = BeautifulSoup(chapter.text)
'提取class为cf的ul标签'
ul = ul_bs.find_all("ul",class_="cf")
print(ul)

ul也顺利抓取到了,接下来我们遍历<ul>下的<a>标签取得所有章节的章节名与链接

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'用于进行网络请求'
import requests
'用于解析html'
from bs4 import BeautifulSoup


chapter = requests.get("https://book.qidian.com/info/1013646681#Catalog")

ul_bs = BeautifulSoup(chapter.text)
'提取class为cf的ul标签'
ul = ul_bs.find_all("ul",class_="cf")
ul_bs = BeautifulSoup(str(ul[0]))
'找到<ul>下的<a>标签'
a_bs = ul_bs.find_all("a")
'遍历<a>的href属性跟text'
for a in a_bs:
    href = a.get("href")
    text = a.get_text()
    print(href)
    print(text)

ok,所有的章节链接搞定,我们去看想想章节详情页面长什么样,然后我们具体制定详情页面的爬取计划。

打开一个章节,用chrome调试工具审查一下。文章标题保存在<h3 class="j_chapterName">中,正文保存在<div class="read-content j_readContent">中。

我们需要从这两个标签中提取内容。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'用于进行网络请求'
import requests
'用于解析html'
from bs4 import BeautifulSoup


chapter = requests.get("https://book.qidian.com/info/1013646681#Catalog")

ul_bs = BeautifulSoup(chapter.text)
'提取class为cf的ul标签'
ul = ul_bs.find_all("ul",class_="cf")
ul_bs = BeautifulSoup(str(ul[0]))
'找到<ul>下的<a>标签'
a_bs = ul_bs.find_all("a")

detail = requests.get("https:"+a_bs[0].get("href"))
text_bs = BeautifulSoup(detail.text)
text = text_bs.find_all("div",class_ = "read-content j_readContent")
print(text)

正文页很顺利就爬取到了,以上代码仅是用第一篇文章做示范,通过调试文章已经可以爬取成功,所有下一步我们只要把所有链接遍历逐个提取就好了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'用于进行网络请求'
import requests
'用于解析html'
from bs4 import BeautifulSoup


chapter = requests.get("https://book.qidian.com/info/1013646681#Catalog")

ul_bs = BeautifulSoup(chapter.text)
'提取class为cf的ul标签'
ul = ul_bs.find_all("ul",class_="cf")
ul_bs = BeautifulSoup(str(ul[0]))
'找到<ul>下的<a>标签'
a_bs = ul_bs.find_all("a")

'遍历所有<href>进行提取'

for a in a_bs:
    detail = requests.get("https:"+a.get("href"))
    d_bs = BeautifulSoup(detail.text)
    '正文'
    content = d_bs.find_all("div",class_ = "read-content j_readContent")
    '标题'
    name = d_bs.find_all("h3",class_="j_chapterName")[0].get_text()

在上图中我们看到正文中的每一个<p>标签为一个段落,提取的文章包含很多<p>标签这也是我们不希望的,接下来去除p标签。

但是去除<p>标签后文章就没有段落格式了呀,这样的阅读体验很不爽的,我们只要在每个段落的结尾加一个换行符就好了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'用于进行网络请求'
import requests
'用于解析html'
from bs4 import BeautifulSoup


chapter = requests.get("https://book.qidian.com/info/1013646681#Catalog")

ul_bs = BeautifulSoup(chapter.text)
'提取class为cf的ul标签'
ul = ul_bs.find_all("ul",class_="cf")
ul_bs = BeautifulSoup(str(ul[0]))
'找到<ul>下的<a>标签'
a_bs = ul_bs.find_all("a")

'遍历所有<href>进行提取'

for a in a_bs:
    detail = requests.get("https:"+a.get("href"))
    d_bs = BeautifulSoup(detail.text)
    '正文'
    content = d_bs.find_all("div",class_ = "read-content j_readContent")
    '标题'
    name = d_bs.find_all("h3",class_="j_chapterName")[0].get_text()
    
    txt = ""
    p_bs = BeautifulSoup(str(content))
    '提取每个<p>标签的内容'
    for p in p_bs.find_all("p"):
        txt = txt + p.get_text()+"\r\n"

去掉<p>标签了,所有的工作都做完了,我们只要把文章保存成一个txt就可以了,txt的文件名以章节来命名。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'用于进行网络请求'
import requests
'用于解析html'
from bs4 import BeautifulSoup

def create_txt(path,txt):
    fd = None 
    try:
        fd = open(path,'w+',encoding='utf-8')
        fd.write(txt)
    except:
        print("error")
    finally:
        if (fd !=None):
            fd.close()


chapter = requests.get("https://book.qidian.com/info/1013646681#Catalog")

ul_bs = BeautifulSoup(chapter.text)
'提取class为cf的ul标签'
ul = ul_bs.find_all("ul",class_="cf")
ul_bs = BeautifulSoup(str(ul[0]))
'找到<ul>下的<a>标签'
a_bs = ul_bs.find_all("a")

'遍历所有<href>进行提取'

for a in a_bs:
    detail = requests.get("https:"+a.get("href"))
    d_bs = BeautifulSoup(detail.text)
    '正文'
    content = d_bs.find_all("div",class_ = "read-content j_readContent")
    '标题'
    name = d_bs.find_all("h3",class_="j_chapterName")[0].get_text()

    path = 'F:\\test\\'
    path = path + name+".txt"
    
    txt = ""
    p_bs = BeautifulSoup(str(content))
    '提取每个<p>标签的内容'
    for p in p_bs.find_all("p"):
        txt = txt + p.get_text()+"\r\n"

    create_txt(path,txt)
    print(path+"保存成功")

文章成功爬取,文件成功保存,搞定。就这么简单的几行代码搞定。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/05/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python爬虫实战——爬取小说
按F12或鼠标右键检查,使用选取页面元素的工具定位各个章节的位置,并且查看对应的链接。
吉吉的机器学习乐园
2022/07/13
3.1K0
Python爬虫实战——爬取小说
python爬虫-数据解析(bs4)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100110.html原文链接:
全栈程序员站长
2021/04/19
1.1K0
python爬虫-数据解析(bs4)
爬取小说案例-BeautifulSoup教学篇
当我们进行爬取各种资源,拿到源码进行解析数据的时候,会用到各种解析方式,本文介绍的爬取小说的一个案例,使用比较受欢迎的python第三方库BeautifuSoup来进行解析数据。
laity
2024/12/22
2080
爬取小说案例-BeautifulSoup教学篇
爬虫实战:从网页到本地,如何轻松实现小说离线阅读
今天我们将继续进行爬虫实战,除了常规的网页数据抓取外,我们还将引入一个全新的下载功能。具体而言,我们的主要任务是爬取小说内容,并实现将其下载到本地的操作,以便后续能够进行离线阅读。
努力的小雨
2024/03/12
5590
Python起点爬虫
起点小说的爬虫是我写的第一个程序,但是之前的那个写的是真的太垃圾了,爬下来的东西也不是人能看的,所以就趁着自己有时间,重新写了一个,稍微优化了一下下
Elapse
2020/08/17
9820
手把手带你Python爬虫 | 爬取起点小说网
用python爬取一本仙侠类的小说下载并保存为txt文件到本地。本例为“大周仙吏”。
快学Python
2021/08/09
3.8K0
python3网络爬虫(抓取文字信息)
本文章是下文链接的学习笔记: 一小时入门python3网络爬虫 原文笔记是在winows下进行的,本文是在ubuntu下进行的所有操作. 爬虫的大概思路其实就两点: 获取网页的HTML信息 解析HTML信息,提取我们真正需要的内容 一 前言 二 网络爬虫简介 1.审查元素 chrome:F12 2.简单实例 网络爬虫根据提供的URL信息,获取网页的HTML信息. 在Python\3中使用request和urllib.request来获取网页的具体信息. urllib库Python内置,无需额
青木
2018/05/28
7.1K0
数据解析-bs4
接下来尝试用select层级选择器定位豆瓣电影的html页面的标签,假如我们想要获取li标签中的第一条并进行各种操作:
y191024
2022/09/20
9260
数据解析-bs4
Python爬虫实例之——小说下载
这是小詹关于爬虫的第②篇文章! 第一篇关于爬虫中介绍了一些基本的术语和简单的操作,这里不重复叙述了,直接放链接,不记得的自己在文章末尾点击前期链接补补~ 本篇开始要进入实操啦,今天第一篇先从简单的爬起~先爬一爬文本格式的数据吧,以小说为例。大致流程为:获取HTML信息,解析HTML信息,将HTML信息中选择感兴趣的保存~ ① 首先上篇还没有说到requests库的使用,这是一个十分强大的库,现列举几个基础方法:(官方中文教程地址:http://docs.python-requests.org/zh_CN/
小小詹同学
2018/04/13
1.5K0
Python爬虫实例之——小说下载
Python爬虫基础
爬虫基础简介 http协议 概念: 服务器和客户端进行数据交互的一种形式 user-Agent: 请求载体的身份表示 Connection : 请求完毕后,是断开连接还是保持连接 Content-Type : 服务器相应客户端的数据类型 # user-Agent ( NetWork-All-Headers ) Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638
shaoshaossm
2022/12/26
4500
Python爬虫技术系列-02HTML解析-BS4
参考连接: https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/# http://c.biancheng.net/python_spider/bs4.html
IT从业者张某某
2022/11/12
9.4K0
Python爬虫技术系列-02HTML解析-BS4
爬取一本小说的python爬虫代码
GeekLiHua
2025/01/21
3780
爬取一本小说的python爬虫代码
深入解析网页结构解析模块beautifulsoup
beautifulsoup(以下简称bs),是一款网页结构解析模块,它支持传统的Xpath,css selector 语法,可以说很强大了,下面我们就来着重介绍下它的用法。
Python进阶者
2021/04/19
2.6K0
深入解析网页结构解析模块beautifulsoup
Python3 网络爬虫(二):下载小说的正确姿势(2020年最新版)
这是明面上,能想到的东西,除了这些还有一些危险的操作,容易被请喝茶的,就不讨论了。
Jack_Cui
2020/04/30
4.9K0
Python3 网络爬虫(二):下载小说的正确姿势(2020年最新版)
Python3 爬虫 requests
安装Python以及必要的模块(requests,bs4),不了解requests和bs4的同学可以去官网看个大概之后再回来看教程
py3study
2020/01/02
5470
Python爬虫实战-抓取《盗墓笔记》所有章节及链接
本次以一个盗墓笔记的小说阅读网(http://seputu.com)为例,抓取盗墓笔记的标题、章节名和链接,如下图 前提: 这是一个静态网站,标题、章节都不是由JavaScript动态加载的,无代理,
爱吃西瓜的番茄酱
2018/04/04
1.9K0
Python爬虫实战-抓取《盗墓笔记》所有章节及链接
爬取小说资源的Python实践:从单线程到多线程的效率飞跃
在当今信息爆炸的时代,获取和处理数据的能力变得尤为重要。对于小说爱好者来说,能够快速下载并阅读自己喜欢的小说无疑是一种享受。本文将介绍如何使用Python编写一个简单的爬虫程序,从笔趣阁网站爬取小说内容,并通过多线程技术提高下载效率。
LucianaiB
2024/12/25
3150
爬取小说资源的Python实践:从单线程到多线程的效率飞跃
python3 爬虫学习:爬取豆瓣读书Top250(二)
上节我们讲到requests只是获取了网页数据,我们需要进一步,获取我们需要的并且能看懂的数据,这里需要用到新的库BeautifulSoup,他是一个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据。
python鱼霸霸
2020/05/04
1.6K0
【Python爬虫实战入门】:笔趣阁小说爬取,一篇教你爬虫入门
简介:requests模块 官方文档:https://requests.readthedocs.io/projects/cn/zh-cn/latest/
爱喝兽奶的熊孩子
2024/08/06
9610
【Python爬虫实战入门】:笔趣阁小说爬取,一篇教你爬虫入门
Python爬虫生成CSV文件的完整流程
在当今数据驱动的时代,网络爬虫已成为获取互联网数据的重要工具。Python凭借其丰富的库生态系统和简洁的语法,成为了爬虫开发的首选语言。本文将详细介绍使用Python爬虫从网页抓取数据并生成CSV文件的完整流程,包括环境准备、网页请求、数据解析、数据清洗和CSV文件输出等关键环节。
小白学大数据
2025/04/07
2110
相关推荐
Python爬虫实战——爬取小说
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档