text = soup.find('div', {'class': 'mulu'})  #查找目录,坑死我了。就这个东西,
知乎上看别人写的爬取网络小说,这个最适合我。
我一开始老是使用beautifulsoup ,find老是不准,原来是这个样子的。这个格式的。真是太无情了。
不准的原因还有一个,那就是解析的页面错了。愚蠢的人类
继续学习。
作者:周小馬
链接:https://www.zhihu.com/question/48900224/answer/266561350
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 # -*- coding: utf-8 -*-
# 导入俩库,足够了
import requests
from bs4 import BeautifulSoup url = "http://www.88dushu.com/xiaoshuo/2/2392/index.html" # 小说索引页
url_text = "http://www.88dushu.com/xiaoshuo/2/2392/" # 小说主页面,后面还需加上每一章的链接
page = range(174, 294) # 第三部是174-294页 # 定义第一个函数, 用来爬取每一章的url和章节名
def get_url(url):
content = requests.get(url).content
soup = BeautifulSoup(content)
# 找到每一章所在的位置,都在'li'这个标签
text = soup.find('div', {'class': 'mulu'}).find('ul').find_all('li')
urls = []
titles = []
for i in page: # 循环第三部的每一章
url1 = text[i].find('a').get('href')
title = text[i].find('a').get_text()
urls.append(url1)
titles.append(title)
#返回链接和章节名
return urls, titles # 定义第二个函数,用来得到每一章的内容,并存入TXT文件
def get_text():
# 从上一个函数获取链接和章节名
urls, titles = get_url(url)
# 文本文件设置为追加模式'a',避免前面的内容被覆盖
f = open('d:/kuanglong.txt', 'a')
for i in range(len(urls)):
url_tt = url_text + str(urls[i]) # 每一章完整的链接
content = requests.get(url_tt).content
soup = BeautifulSoup(content)
# 得到一章的内容
text = soup.find('div', {'class': 'yd_text2'}).get_text()
# 将得到的内容清洗,去除广告
text = text.replace("****[ 请到 六九中文阅读最新章节 ]****", '').replace('[\****/[ 六九中文急速更新 ]\****/]', '')\
.replace('\xa0', '')
# 章节名 + 章节内容
texts = titles[i] + text
# 写入txt文件
f.write(texts)
# 循环完之后关闭文件句柄
f.close() # 运行程序
if __name__ == '__main__':
get_text()

获取文档链接

for link in soup.find_all('a'):
print(link.get('href'))
# http://example.com/elsie
# http://example.com/lacie
# http://example.com/tillie

获取文档文字内容

print(soup.get_text())
# The Dormouse's story
#
# The Dormouse's story
#
# Once upon a time there were three little sisters; and their names were
# Elsie,
# Lacie and
# Tillie;
# and they lived at the bottom of a well.
#
# ...

慢不要快,稳才是对的。

Beautifusoup的更多相关文章

  1. 爬虫实例之使用requests和Beautifusoup爬取糗百热门用户信息

    这次主要用requests库和Beautifusoup库来实现对糗百的热门帖子的用户信息的收集,由于糗百的反爬虫不是很严格,也不需要先登录才能获取数据,所以较简单. 思路,先请求首页的热门帖子获得用户 ...

  2. BeautifuSoup的使用

    BeautifulSoup是一个模块,该模块用于接收一个HTML或XML字符串,然后将其进行格式化,之后遍可以使用他提供的方法进行快速查找指定元素,从而使得在HTML或XML中查找指定元素变得简单.

  3. 爬虫工具--Beautifusoup

    import requests from bs4 import BeautifulSoup s=requests.Session() r=s.get('https://www.tumblr.com/l ...

  4. 【转】Python练习,网络爬虫框架Scrapy

    一.概述 下图显示了Scrapy的大体架构,其中包含了它的主要组件及系统的数据处理流程(绿色箭头所示).下面就来一个个解释每个组件的作用及数据的处理过程. 二.组件 1.Scrapy Engine(S ...

  5. python Scrapy安装和介绍

    python Scrapy安装和介绍 Windows7下安装1.执行easy_install Scrapy Centos6.5下安装 1.库文件安装yum install libxslt-devel ...

  6. 爬虫:把廖雪峰的教程转换成 PDF 电子书

    写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的 library 分分钟就可以写出一个爬虫出来,今天就琢磨着写一个爬虫,将廖雪峰的 ...

  7. 利用python设计PDF报告,jinja2,whtmltopdf,matplotlib,pandas

    转自:https://foofish.net/python-crawler-html2pdf.html 工具准备 弄清楚了网站的基本结构后就可以开始准备爬虫所依赖的工具包了.requests.beau ...

  8. Scrapy 爬虫入门 +实战

    爬虫,其实很早就有涉及到这个点,但是一直没有深入,今天来搞爬虫.选择了,scrapy这个框架 http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tut ...

  9. Scrapy架构及其组件之间的交互

    最近在学Python,同时也在学如何使用python抓取数据,于是就被我发现了这个非常受欢迎的Python抓取框架Scrapy,下面一起学习下Scrapy的架构,便于更好的使用这个工具. 一.概述 下 ...

随机推荐

  1. python中os模块函数方法详解最全最新

    os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 import os print(os.getcwd()) os.chdir("dirname") 改 ...

  2. (4.16)sql server迁移DB文件(同一DB内)

    SQL Server 修改数据库物理文件存在位置 关键词:迁移文件,迁移temp库(这怎么迁移呢,用方法2即可,需要重启实例) 三种均需要离线: 一共分为(1)脱机迁移和(2)在线迁移. (1)迁移方 ...

  3. Sql多条件排序

    多条件排序可以通过在order by语句后面使用case when then条件语句来实现. end 例子: 1.创建表case_test 共有id,case_type,case_location,c ...

  4. 做测试时,启动SpringBoot出现警告,在ClassPath中一个类多次出现

    Found multiple occurrences of org.json.JSONObject on the class path: jar:file:/C:/Users/niaomingjian ...

  5. iOS 反射 学习 和 运用

    iOS  反射 学习 和 运用 反射:  通过 类名来获得生成的相应的类的实例 的这种机制  叫 反射 常用的反射方式 把 NSDictionary  转成 自定义 model 自定义 model 转 ...

  6. Linux文件系统管理 parted分区命令

    概述 parted 命令是可以在命令行直接分区和格式化的,不过 parted 交互模式才是更加常用的命令方式. parted命令 进入交互模式命令如下: [root@localhost ~]# par ...

  7. INDEL的重新比对和碱基质量分数的重新校准

    1.为什么要做这两步(why): indel的重新比对:这是由于比对软件的自身限制,其可能将包括indel的read解释为snp的read,这就导致calling的错误和后面的碱基质量分数的重新校准. ...

  8. windows7下手工搭建Apache2.2 php5.3 Mysql5.5开发环境

    Apache2.2(apache_2.2.2-win32-x86-no_ssl)php5.3.5(php-5.3.5-Win32-VC6-x86,请注意选择VC6版本,否则无法加载php5apache ...

  9. JavaWeb CSS

    1. CSS介绍 1.1. 什么是CSS CSS全称为Cascading Style Sheets,译为层叠样式表. 样式定义如何显示HTML元素. 样式通常存储在样式表中. 1.2. 百度百科 CS ...

  10. IEnumerable的一些基本方法 补充

    接上一篇,我们发现两表连接方式默认为内连接,而我们在SQL中常用到的左连接没有封装方法.换句话说,微软放弃两表左连或右连的这种做法(只有在2个表都存在值时,这样的连接才有意义). 如果要实现表的左连接 ...