Python爬取三国演义的实现方法


Posted in Python onSeptember 12, 2016

本文的爬虫教程分为四部:

     1.从哪爬 where

     2.爬什么 what

     3.怎么爬 how

     4.爬了之后信息如何保存 save

一、从哪爬

三国演义

二、爬什么

三国演义全文

三、怎么爬

在Chrome页面打开F12,就可以发现文章内容在节点

<div id="con" class="bookyuanjiao">

只要找到这个节点,然后把内容写入到一个html文件即可。

content = soup.find("div", {"class": "bookyuanjiao", "id": "con"})

四、爬了之后如何保存

主要就是拿到内容,拼接到一个html文件,然后保存下来就可以了。

#!usr/bin/env 
# -*-coding:utf-8 -*-
import urllib2
import os
from bs4 import BeautifulSoup as BS
import locale
import sys
from lxml import etree
import re

reload(sys)
sys.setdefaultencoding('gbk')

sub_folder = os.path.join(os.getcwd(), "sanguoyanyi")
if not os.path.exists(sub_folder):
  os.mkdir(sub_folder)

path = sub_folder

# customize html as head of the articles
input = open(r'0.html', 'r')
head = input.read()

domain = 'http://www.shicimingju.com/book/sanguoyanyi.html'
t = domain.find(r'.html')
new_domain = '/'.join(domain.split("/")[:-2])
first_chapter_url = domain[:t] + "/" + str(1) + '.html'
print first_chapter_url

# Get url if chapter lists
req = urllib2.Request(url=domain)
resp = urllib2.urlopen(req)
html = resp.read()
soup = BS(html, 'lxml')
chapter_list = soup.find("div", {"class": "bookyuanjiao", "id": "mulu"})
sel = etree.HTML(str(chapter_list))
result = sel.xpath('//li/a/@href')

for each_link in result:
  each_chapter_link = new_domain + "/" + each_link
  print each_chapter_link
  req = urllib2.Request(url=each_chapter_link)
  resp = urllib2.urlopen(req)
  html = resp.read()

  soup = BS(html, 'lxml')
  content = soup.find("div", {"class": "bookyuanjiao", "id": "con"})
  title = soup.title.text
  title = title.split(u'_《三国演义》_诗词名句网')[0]

  html = str(content)
  html = head + html + "</body></html>"

  filename = path + "\\" + title + ".html"
  print filename
  # write file
  output = open(filename, 'w')
  output.write(html)
  output.close()

0.html的内容如下

<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body>

总结

以上就是利用Python爬取三国演义的实现方法,希望对大家学习python能有所帮助,如果有疑问大家可以留言交流。

Python 相关文章推荐
Tornado Web服务器多进程启动的2个方法
Aug 04 Python
Python使用minidom读写xml的方法
Jun 03 Python
详解python开发环境搭建
Dec 16 Python
Python使用修饰器执行函数的参数检查功能示例
Sep 26 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
May 25 Python
详解Python连接MySQL数据库的多种方式
Apr 16 Python
python 判断三个数字中的最大值实例代码
Jul 24 Python
Django RBAC权限管理设计过程详解
Aug 06 Python
Python matplotlib生成图片背景透明的示例代码
Aug 30 Python
Pycharm和Idea支持的vim插件的方法
Feb 21 Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 Python
Django + Taro 前后端分离项目实现企业微信登录功能
Apr 07 Python
python 读写、创建 文件的方法(必看)
Sep 12 #Python
Python读写Json涉及到中文的处理方法
Sep 12 #Python
详细介绍Python的鸭子类型
Sep 12 #Python
Python 读写文件和file对象的方法(推荐)
Sep 12 #Python
使用Python进行二进制文件读写的简单方法(推荐)
Sep 12 #Python
浅谈python对象数据的读写权限
Sep 12 #Python
python获取list下标及其值的简单方法
Sep 12 #Python
You might like
php下几个常用的去空、分组、调试数组函数
2009/02/22 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
2011/11/10 PHP
利用浏览器的Javascript控制台调试PHP程序
2014/01/08 PHP
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
jQuery代码实现发展历程时间轴特效
2015/07/30 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
JavaScript实现打开链接页面的方式汇总
2016/06/02 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
bootstrap手风琴制作方法详解
2017/01/11 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
angular4中关于表单的校验示例
2017/10/16 Javascript
JS集合set类的实现与使用方法示例
2019/02/01 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
js实现ajax的用户简单登入功能
2020/06/18 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
Python内置函数—vars的具体使用方法
2017/12/04 Python
详解Python 正则表达式模块
2018/11/05 Python
opencv python统计及绘制直方图的方法
2019/01/21 Python
Django 静态文件配置过程详解
2019/07/23 Python
基于python图像处理API的使用示例
2020/04/03 Python
Python读取JSON数据操作实例解析
2020/05/18 Python
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
大学生农村教师实习自我鉴定
2013/09/21 职场文书
婚礼家长致辞
2015/07/27 职场文书
js实现上传图片到服务器
2021/04/11 Javascript
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang