bs4-爬取小说
bs4
安装
pip install bs4
pip install lxml
bs4有两种运行方式一种是处理本地资源,一种是处理网络资源
本地
from bs4 import BeautifulSoup
if __name__ == '__main__':
fr = open("wl.html",'r',encoding="utf8")
soup=BeautifulSoup(fr,'lxml')
print(soup)
网络
from bs4 import BeautifulSoup
import requests
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
}
if __name__ == '__main__':
url="https://www.cnblogs.com/zx125/p/11404486.html"
res=requests.get(url=url,headers=headers)
soup=BeautifulSoup(res.text,'lxml')
print(soup)
实例化对象的方法
soup.tagname
直接返回第一个tag标签的内容
#返回第一个a标签对象
soup.a
soup.find()
#效果和上面类似
soup.find(tagname)
#class_为tagname上的class内的属性
soup.find(tagname,class_="")
#有以下属性
class_ id attr
双重定位 属性定位 但是只拿一个
soup.find_all()
#用法和上面相同但是可以拿到满足条件的所有数据
soup.find(tagname,class_="")
soup.select()
#它支持css的选择器
select('某种选择器 #id .class 标签...'),返回的是一个列表
层级选择
soup.select('.zx > ul > li > a')一个>表示一个层级
soup.select('.zx > ul a')也可以这样写,一个空格代表以下的任意层级,并找到所有的a
获取标签的文本内容
soup.select('.zx > ul a').tagname.text/string/get_text()
text/get_text()获取标签下面所有的文本内容
string只获取直系的文本
获取标签中的属性值
a["href"]
基本使用
from bs4 import BeautifulSoup
soup=BeautifulSoup(html_doc,'lxml') #具有容错功能
res=soup.prettify() #处理好缩进,结构化显示
案例爬取小说标题和内容
import requests
from bs4 import BeautifulSoup
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
}
def work():
url="http://www.shicimingju.com/book/sanguoyanyi.html"
res=requests.get(url=url,headers=headers).text
#读取首页信息
soup=BeautifulSoup(res,"lxml")
#获取所有标题存在的a标签
titles=soup.select(".book-mulu > ul > li > a")
with open("./sangup.txt","w",encoding="utf8")as fw:
for i in titles:
#获取标题名称
title=i.text
#获取文章内容的url,并拼接成有效的请求链接
url_title="http://www.shicimingju.com"+i['href']
res2=requests.get(url=url_title,headers=headers).text
soup2=BeautifulSoup(res2,"lxml")
#获取每个章节的文章内容
content=soup2.find("div",class_="chapter_content").text
context_all=title+"\n"+content+"\n"
#将标题和文章内容写入本地文件
fw.write(context_all)
print(title+"写入成功")
if __name__ == '__main__':
work()
参考链接
https://www.cnblogs.com/xiaoyuanqujing/articles/11805757.html
https://www.jianshu.com/p/9254bdc467b2
bs4-爬取小说的更多相关文章
- python爬虫——爬取小说 | 探索白子画和花千骨的爱恨情仇(转载)
转载出处:药少敏 ,感谢原作者清晰的讲解思路! 下述代码是我通过自己互联网搜索和拜读完此篇文章之后写出的具有同样效果的爬虫代码: from bs4 import BeautifulSoup imp ...
- python之爬取小说
继上一篇爬取小说一念之间的第一章,这里将进一步展示如何爬取整篇小说 # -*- coding: utf- -*- import urllib.request import bs4 import re ...
- 用Python爬取小说《一念永恒》
我们首先选定从笔趣看网站爬取这本小说. 然后开始分析网页构造,这些与以前的分析过程大同小异,就不再多叙述了,只需要找到几个关键的标签和user-agent基本上就可以了. 那么下面,我们直接来看代码. ...
- python3下BeautifulSoup练习一(爬取小说)
上次写博客还是两个月以前的事,今天闲来无事,决定把以前刚接触python爬虫时的一个想法付诸行动:就是从网站上爬取小说,这样可以省下好多流量(^_^). 因为只是闲暇之余写的,还望各位看官海涵:不足之 ...
- Python实战项目网络爬虫 之 爬取小说吧小说正文
本次实战项目适合,有一定Python语法知识的小白学员.本人也是根据一些网上的资料,自己摸索编写的内容.有不明白的童鞋,欢迎提问. 目的:爬取百度小说吧中的原创小说<猎奇师>部分小说内容 ...
- python实战项目 — 使用bs4 爬取猫眼电影热榜(存入本地txt、以及存储数据库列表)
案例一: 重点: 1. 使用bs4 爬取 2. 数据写入本地 txt from bs4 import BeautifulSoup import requests url = "http:// ...
- Scrapy爬取小说简单逻辑
Scrapy爬取小说简单逻辑 一 准备工作 1)安装Python 2)安装PIP 3)安装scrapy 4)安装pywin32 5)安装VCForPython27.exe ........... 具体 ...
- 使用request+bs4爬取所有股票信息
爬取前戏 我们要知道利用selenium是非常无敌的,自我认为什么反爬不反爬都不在话下,但是今天我们为什么要用request+bs4爬取所有股票信息呢?因为他比较原始,因此今天的数据,爬取起来也是比较 ...
- Golang 简单爬虫实现,爬取小说
为什么要使用Go写爬虫呢? 对于我而言,这仅仅是练习Golang的一种方式. 所以,我没有使用爬虫框架,虽然其很高效. 为什么我要写这篇文章? 将我在写爬虫时找到资料做一个总结,希望对于想使用Gola ...
- Python3爬取小说并保存到文件
问题 python课上,老师给同学们布置了一个问题,因为这节课上学的是正则表达式,所以要求利用python爬取小说网的任意小说并保存到文件. 我选的网站的URL是'https://www.biquka ...
随机推荐
- 学习笔记12JS异步请求
*一般用JS来监听按钮事件,都应该先监听页面OnLoad事件. *Js写在哪里,就会在页面解析到哪里执行. 异步请求:所谓异步请求,就是使用JS来监听按钮点击事件,并且发送请求,等到回复后,再使用JS ...
- CheckStyle,定制属于自己的Java编码规范
前言 如今,代码规范几乎是当下稍有追求的团队都要求做到的,但是对于Java编码规范,不同的公司或团队却有着不同的标准.尽管官方提供了一些标准,但是在基本规则的基础上,各大公司又有自己的规范,比如Sun ...
- P3976 [TJOI2015]旅游(未完成)
#include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #inc ...
- raw文件转mha文件
raw格式 在体数据(volume)中,经常会遇到raw文件,raw文件就是其实就是所有体素组成的文件,raw文件必须还有一些描信息才能用(因为得知道数据的size,type,spacing等),就像 ...
- 开源跳板机(堡垒机)系统 Jumpserver安装教程(带图文)
环境 系统: CentOS 7 IP: 192.168.244.144 关闭 selinux 和防火墙 # CentOS 7 $ setenforce 0 # 可以设置配置文件永久关闭 $ syste ...
- ubuntu下minicom和usb串口转接
ubuntu下minicom和USB转串口(转) (2013-03-23 21:07:54) 转载▼ 标签: it 分类: 嵌入式linux minicom是linux下串口通信的软件,它的使用完全依 ...
- python经典面试算法题1.1:如何实现链表的逆序
本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. 1.1 如何实现链表的逆序 [腾讯笔试题] 难度系数:⭐⭐⭐ ...
- iOS定位--CoreLocation
一:导入框架 #import <CoreLocation/CoreLocation.h> 二:设置代理及属性 <CLLocationManagerDelegate> @prop ...
- Angular 2的HTML5 pushState在ASP.NET Core上的解决思路
Angular 2的HTML5 pushState在ASP.NET Core上的解决思路 正如Angular 2在Routing & Navigation中所提及的那样,Angular 2是推 ...
- 利用GitHub Pages + jekyll快速搭建个人博客
前言 想搭建自己博客很久了(虽然搭了也不见得能产出多频繁). 最初萌生想写自己博客的想法,想象中,是自己一行一行码出来的成品,对众多快速构建+模板式搭建不屑一顾,也是那段时间给闲的,从前后端选型.数据 ...