Beautifusoup
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的更多相关文章
- 爬虫实例之使用requests和Beautifusoup爬取糗百热门用户信息
这次主要用requests库和Beautifusoup库来实现对糗百的热门帖子的用户信息的收集,由于糗百的反爬虫不是很严格,也不需要先登录才能获取数据,所以较简单. 思路,先请求首页的热门帖子获得用户 ...
- BeautifuSoup的使用
BeautifulSoup是一个模块,该模块用于接收一个HTML或XML字符串,然后将其进行格式化,之后遍可以使用他提供的方法进行快速查找指定元素,从而使得在HTML或XML中查找指定元素变得简单.
- 爬虫工具--Beautifusoup
import requests from bs4 import BeautifulSoup s=requests.Session() r=s.get('https://www.tumblr.com/l ...
- 【转】Python练习,网络爬虫框架Scrapy
一.概述 下图显示了Scrapy的大体架构,其中包含了它的主要组件及系统的数据处理流程(绿色箭头所示).下面就来一个个解释每个组件的作用及数据的处理过程. 二.组件 1.Scrapy Engine(S ...
- python Scrapy安装和介绍
python Scrapy安装和介绍 Windows7下安装1.执行easy_install Scrapy Centos6.5下安装 1.库文件安装yum install libxslt-devel ...
- 爬虫:把廖雪峰的教程转换成 PDF 电子书
写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的 library 分分钟就可以写出一个爬虫出来,今天就琢磨着写一个爬虫,将廖雪峰的 ...
- 利用python设计PDF报告,jinja2,whtmltopdf,matplotlib,pandas
转自:https://foofish.net/python-crawler-html2pdf.html 工具准备 弄清楚了网站的基本结构后就可以开始准备爬虫所依赖的工具包了.requests.beau ...
- Scrapy 爬虫入门 +实战
爬虫,其实很早就有涉及到这个点,但是一直没有深入,今天来搞爬虫.选择了,scrapy这个框架 http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tut ...
- Scrapy架构及其组件之间的交互
最近在学Python,同时也在学如何使用python抓取数据,于是就被我发现了这个非常受欢迎的Python抓取框架Scrapy,下面一起学习下Scrapy的架构,便于更好的使用这个工具. 一.概述 下 ...
随机推荐
- 正确使用索引(sql优化),limit分页优化,执行计划,慢日志查询
查看表相关命令 - 查看表结构 desc 表名- 查看生成表的SQL show create table 表名- 查看索引 show index from 表名 使用索引和不使用索引 由 ...
- Map.Entry<K,V>分析
一.好处 你是否已经对每次从Map中取得关键字然后再取得相应的值感觉厌倦? Set keys = map.keySet( ); if(keys != null) { Iterator iterator ...
- 关于Java中的toString()方法
package c07; class ewq{ public String toString() { return "ppppppppp"; } public static voi ...
- 剑指offer 面试55题
面试55题: 题目:二叉树的深度 题:输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 解题思路: ①如果一棵树只有一个节点,它 ...
- 使用idea2016导出web项目war包
第一步配置Web Application:Exploded(已经配置的可以跳到第二步): 打开project structure(默认的快捷键是Ctrl+Alt+Shift+S),依次选择Artifa ...
- 【渗透神器系列】Fiddler (收藏)
发表于 2017-04-27 | 分类于 安全工具 | | 阅读次数 593 人世起起落落 左手边上演的华灯初上 右手边是繁华落幕的星点余光 本篇作为渗透神器系列第二篇,将介绍 ...
- 31 整数中1出现的次数(从1到n整数中1出现的次数)
题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了. ...
- oc字符串+数组+字典操作题目
1. 判断中间目录是否存在 (10分) 比如 传入字符串 @"/home/qianfeng/oc.txt" 和 @"qianfeng" 返回:YES 传入字符串 ...
- Oracle索引(2)索引的修改与维护
修改索引 利用alter index语句可以完成的操作 重建或合并索引 回收索引未使用的空间或为索引非配新空间 修改索引是否可以并行操作及并行度 修改索引的存储参数以及物理属性 指定Logging ...
- android 加固防止反编译-重新打包
http://blog.csdn.net/u010921385/article/details/52505094 1.需要加密的Apk(源Apk) 2.壳程序Apk(负责解密Apk工作) 3.加密工具 ...