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 相关文章推荐
Pycharm学习教程(7)虚拟机VM的配置教程
May 04 Python
python自动化脚本安装指定版本python环境详解
Sep 14 Python
Python简单计算数组元素平均值的方法示例
Dec 26 Python
用python爬取租房网站信息的代码
Dec 14 Python
Python语言快速上手学习方法
Dec 14 Python
python遍历小写英文字母的方法
Jan 02 Python
pytorch使用Variable实现线性回归
May 21 Python
Ubuntu+python将nii图像保存成png格式
Jul 18 Python
python模块hashlib(加密服务)知识点讲解
Nov 25 Python
python中的subprocess.Popen()使用详解
Dec 25 Python
django models里数据表插入数据id自增操作
Jul 15 Python
Python读写压缩文件的方法
Jul 30 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
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
PHP4.04简明安装
2006/10/09 PHP
php数组一对一替换实现代码
2012/08/31 PHP
PHP实现一维数组与二维数组去重功能示例
2018/05/24 PHP
php集成开发环境详解
2019/09/24 PHP
Yii框架小部件(Widgets)用法实例详解
2020/05/15 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
JQuery 常用操作代码
2010/03/14 Javascript
js函数setTimeout延迟执行的简单介绍
2013/07/17 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
Jquery实现遮罩层的方法
2015/06/08 Javascript
JavaScript中的this机制
2016/01/30 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
layui分页效果实现代码
2017/05/19 Javascript
Angular实现的内置过滤器orderBy排序与模糊查询功能示例
2017/12/29 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
2019/04/08 Javascript
Python操作mongodb的9个步骤
2018/06/04 Python
Python OpenCV实现视频分帧
2019/06/01 Python
django实现用户注册实例讲解
2019/10/30 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
Python自动登录QQ的实现示例
2020/08/28 Python
用CSS3的box-reflect设置文字倒影效果的方法讲解
2016/03/07 HTML / CSS
应聘自荐信
2013/12/14 职场文书
高中军训感想800字
2014/02/23 职场文书
电子商务专业求职信
2014/07/10 职场文书
无私奉献演讲稿
2014/09/04 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
大学生团员个人总结
2015/02/14 职场文书
毕业论文致谢词
2015/05/14 职场文书
初婚未育证明样本
2015/06/18 职场文书
欠条范文
2015/07/03 职场文书
mysql 索引合并的使用
2021/08/30 MySQL
MySQL分区表实现按月份归类
2021/11/01 MySQL