热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python3使用BeautifulSoup4爬取《三国演义》

#!surbinpython#condingutf-8importurllib.requestfrombs4importBeautifulSoupurlhttp:www.shi
#!/sur/bin/python
#cOnding=utf-8
import urllib.request
from bs4 import BeautifulSoup
url="http://www.shicimingju.com/book/sanguoyanyi.html" # 要爬取的网络地址
menuCode=urllib.request.urlopen(url).read() # 将网页源代码赋予menuCode
soup=BeautifulSoup(menuCode,'html.parser') # 使用html解析器进行解析
menu=soup.find_all(id="mulu") # 在soup中找到id为mulu的节点
values = ','.join(str(v) for v in menu) # 将 menu转换为str类型
soup2=BeautifulSoup(values,'html.parser')
soup2=soup2.ul # 用子节点代替soup2
print("-------------------soup2.contents----------------------------")
print(soup2.contents)

bookName=soup.h1.string # 找到了书名
print(u"----------------------'书名'------------------------------")
print(u"书名:"+bookName)
f=open('D://'+bookName+'.doc','a',encoding='utf8')
f.write(bookName+"\n")#写入书名
Desc=soup.p.get_text() #简介
f.write(Desc+"\n")#写入简介
print(u"---------------------'简介'------------------------------")
print(Desc)

 


bookMenu=[] # 章节list
bookMenuUrl=[] # 章节url的list
#遍历list要in len(list)-1,因为list第一个元素list[0]
print(u"----------------------------章节和对应的url链接----------------------------")
for i in range(1,len(soup2.contents)-1): # 依次爬取书的章节
bookMenu.append(soup2.contents[i].string)
bookMenuUrl.append(soup2.contents[i].a['href'])
con=u'章节:%s,URL:%s' %(soup2.contents[i].string,soup2.contents[i].a['href'])
print(con)
f.write(con+"\n")#写入章节以及对应的URL链接

#获取文章内容:
"""
通过遍历章节的url来获取每个url对应的文章内容。
"""
urlBegin="http://www.shicimingju.com" #初始URL
for i in range (0,len(bookMenuUrl)):# 依次替换每个章节的url,读取每章页面的内容
chapterCode=urllib.request.urlopen(urlBegin+bookMenuUrl[i]).read()#拼接成完整的URL,然后读出内容
chapterSoup=BeautifulSoup(chapterCode,'html.parser') # 使用BS读取解析网页代码
chapterResult=chapterSoup.find_all(id='con2') # 找到id=‘con2’的节点
chapterResult = ','.join(str(v) for v in chapterResult) # 将节点内的代码转为str类型
chapterSoup2=BeautifulSoup(chapterResult,'html.parser') # 使用BS解析节点内代码
# print(chapterSoup2.contents) #.contents把内容转化为list形式
chapterText=chapterSoup2.get_text()#获取节点内文档内容
print(chapterText)
f.write(bookMenu[i]) # 写入文件每章标题
f.write(chapterText)

#结果:

 


                        
                        
                         
推荐阅读
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • 本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 本文介绍了如何利用JavaScript或jQuery来判断网页中的文本框是否处于焦点状态,以及如何检测鼠标是否悬停在指定的HTML元素上。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
author-avatar
手机用户2502860581
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有