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的架构,便于更好的使用这个工具. 一.概述 下 ...
随机推荐
- windows server2003/2008中权限账户
在windows server 2003与windows server 2008 R2中,查看文件夹权限时,尤其是用cacls命令查看时,经常会见nt authority system这样的用户信息. ...
- pip升级或卸载安装的包的方法
先 pip list 看看包的具体名字是什么,然后 pip uninstall **包名** ===== 打印出有新版本的包: pip list --outdated --format=freeze ...
- Django序列化
一.Django序列化 1.序列化应用场景 1.关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,由于httpresponse只能返回字符串或者是字节,而从数据库 ...
- Charles安装与使用
Charles是在 Mac 下常用的网络封包截取工具,在做 移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析. Charles 通过将自己设置成系统的网络访问代理服务器,使 ...
- 解释python中的help()和dir()函数
help函数是一个内置函数,用于查看函数或模块用途的详细说明 import copy print(help(copy.copy)) Help on function copy in module co ...
- Hibernate学习---检索优化
Hibernate框架对检索进行了优化,前面我们将CURD的时候提到了load和get的区别,当时仅仅说了load为延迟加载,get为立即加载,当检索的记录为空的时候load报错(不是在执行load方 ...
- 爬虫学习笔记(2)--创建scrapy项目&&css选择器
一.手动创建scrapy项目---------------- 安装scrapy: pip install -i https://pypi.douban.com/simple/ scrapy 1 ...
- val() attr('value')
val() 只能更改输入框内的值,能更改value属性, 在浏览器中体现不出value被改变 attr('value') 都可以 谷歌浏览器 val,attr都能获取输入框最新的value值
- Java底层代码实现单文件读取和写入(解决中文乱码问题)
需求: 将"E:/data/车站一次/阿坝藏族羌族自治州.csv"文件中的内容读取,写入到"E:/data//车站一次.csv". 代码: public cla ...
- busybox rmmod error — rmmod: chdir(2.6.25): No such file or directory
busybox rmmod error rmmod: chdir(2.6.25): No such file or directory 1. install your modules in dir / ...