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-爬取小说的更多相关文章

  1. python爬虫——爬取小说 | 探索白子画和花千骨的爱恨情仇(转载)

    转载出处:药少敏   ,感谢原作者清晰的讲解思路! 下述代码是我通过自己互联网搜索和拜读完此篇文章之后写出的具有同样效果的爬虫代码: from bs4 import BeautifulSoup imp ...

  2. python之爬取小说

    继上一篇爬取小说一念之间的第一章,这里将进一步展示如何爬取整篇小说 # -*- coding: utf- -*- import urllib.request import bs4 import re ...

  3. 用Python爬取小说《一念永恒》

    我们首先选定从笔趣看网站爬取这本小说. 然后开始分析网页构造,这些与以前的分析过程大同小异,就不再多叙述了,只需要找到几个关键的标签和user-agent基本上就可以了. 那么下面,我们直接来看代码. ...

  4. python3下BeautifulSoup练习一(爬取小说)

    上次写博客还是两个月以前的事,今天闲来无事,决定把以前刚接触python爬虫时的一个想法付诸行动:就是从网站上爬取小说,这样可以省下好多流量(^_^). 因为只是闲暇之余写的,还望各位看官海涵:不足之 ...

  5. Python实战项目网络爬虫 之 爬取小说吧小说正文

    本次实战项目适合,有一定Python语法知识的小白学员.本人也是根据一些网上的资料,自己摸索编写的内容.有不明白的童鞋,欢迎提问. 目的:爬取百度小说吧中的原创小说<猎奇师>部分小说内容 ...

  6. python实战项目 — 使用bs4 爬取猫眼电影热榜(存入本地txt、以及存储数据库列表)

    案例一: 重点: 1. 使用bs4 爬取 2. 数据写入本地 txt from bs4 import BeautifulSoup import requests url = "http:// ...

  7. Scrapy爬取小说简单逻辑

    Scrapy爬取小说简单逻辑 一 准备工作 1)安装Python 2)安装PIP 3)安装scrapy 4)安装pywin32 5)安装VCForPython27.exe ........... 具体 ...

  8. 使用request+bs4爬取所有股票信息

    爬取前戏 我们要知道利用selenium是非常无敌的,自我认为什么反爬不反爬都不在话下,但是今天我们为什么要用request+bs4爬取所有股票信息呢?因为他比较原始,因此今天的数据,爬取起来也是比较 ...

  9. Golang 简单爬虫实现,爬取小说

    为什么要使用Go写爬虫呢? 对于我而言,这仅仅是练习Golang的一种方式. 所以,我没有使用爬虫框架,虽然其很高效. 为什么我要写这篇文章? 将我在写爬虫时找到资料做一个总结,希望对于想使用Gola ...

  10. Python3爬取小说并保存到文件

    问题 python课上,老师给同学们布置了一个问题,因为这节课上学的是正则表达式,所以要求利用python爬取小说网的任意小说并保存到文件. 我选的网站的URL是'https://www.biquka ...

随机推荐

  1. 调用微信js sdk

    场景:需要调用微信获取当前位置的借口. 途径:查看微信 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 .后 ...

  2. Windows 10 与 kali 双系统安装

    一.教程中用到的工具如下: 1.kali 2019镜像, 2.U盘 现在最低也有8G吧 3.软碟通 ,U盘刻录工具 4.win 10系统要留出一个空的硬盘,哪个盘的空间比较大可以压缩出大概100G的空 ...

  3. SVD分解

    首先,有y = AX,将A看作是对X的线性变换 但是,如果有AX = λX,也就是,A对X的线性变换,就是令X的长度为原来的λ倍数. *说起线性变换,A肯定要是方阵,而且各列线性无关.(回想一下,A各 ...

  4. LVS NAT模式实践

    client:192.168.4.10/24 proxy:192.168.2.5/24 192.168.4.5/24 web1:192.168.4.100/24 web2:192.168.4.200/ ...

  5. 主席树学习笔记(静态区间第k大)

    题目背景 这是个非常经典的主席树入门题——静态区间第K小 数据已经过加强,请使用主席树.同时请注意常数优化 题目描述 如题,给定N个整数构成的序列,将对于指定的闭区间查询其区间内的第K小值. 输入输出 ...

  6. python机器学习——使用scikit-learn训练感知机模型

    这一篇我们将开始使用scikit-learn的API来实现模型并进行训练,这个包大大方便了我们的学习过程,其中包含了对常用算法的实现,并进行高度优化,以及含有数据预处理.调参和模型评估的很多方法. 我 ...

  7. PHP创建文件命名中文乱码解决的方法

    PHP创建文件命名中文乱码解决的方法 <pre>iconv('utf-8', 'gbk', $dir); </pre> 因为系统环境是gbk 所以里面的字符也要gbk 编码一致 ...

  8. Groovy单元测试框架spock基础功能Demo

    spock是一款全能型的单元测试框架. 最近在做单元测试框架的调研和尝试,目前确定的方案框架包括是:spock,Junit,Mockito以及powermock.由于本身使用Groovy的原因,比较钟 ...

  9. SqlServer2005 查询 第六讲 null

    今天们来讲sql命令中的这个null参数 null null: 可以理解成[没有值,空值]的意思 注意以下几点 --1.零和null是不一样的,null表示空值,而零表示的一个确定的值 --2.nul ...

  10. PHP实现日历签到,并实现累计积分功能

    在网站开发过程中我们会经常用到签到功能来奖励用户积分,或者做一些其他活动.这次项目开发过程中做了日历签到,因为没有经验所有走了很多弯路,再次记录过程和步骤. 1.日历签到样式:使用的是calendar ...