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 相关文章推荐
python实现简单的socket server实例
Apr 29 Python
Python的gevent框架的入门教程
Apr 29 Python
python计算文本文件行数的方法
Jul 06 Python
使用py2exe在Windows下将Python程序转为exe文件
Mar 04 Python
Python实现将不规范的英文名字首字母大写
Nov 15 Python
Python实现求数列和的方法示例
Jan 12 Python
python简单实现操作Mysql数据库
Jan 29 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
Jan 10 Python
python传到前端的数据,双引号被转义的问题
Apr 03 Python
TensorFlow实现批量归一化操作的示例
Apr 22 Python
Python-OpenCV实现图像缺陷检测的实例
Jun 11 Python
Matplotlib绘制条形图的方法你知道吗
Mar 21 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中通过curl检测页面是否被百度收录
2013/09/27 PHP
学习php设计模式 php实现模板方法模式
2015/12/08 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
解决laravel中日志权限莫名变成了root的问题
2019/10/17 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
javascript 时间比较实现代码
2009/10/28 Javascript
Javascript 类与静态类的实现
2010/04/01 Javascript
js 动态文字滚动的例子
2011/01/17 Javascript
Eval and new funciton not the same thing
2012/12/27 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
让html页面不缓存js的实现方法
2014/10/31 Javascript
jQuery中click事件用法实例
2014/12/26 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
如何在Angular2中使用jQuery及其插件的方法
2017/02/09 Javascript
使用bat打开多个cmd窗口执行gulp、node
2017/02/17 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
在 Node.js 中使用原生 ES 模块方法解析
2017/09/19 Javascript
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
[37:29]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.19
2020/11/19 DOTA
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
Python 备份程序代码实现
2017/03/06 Python
浅谈Python基础—判断和循环
2019/03/22 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
澳大利亚婴儿喂养品牌:Cherub Baby
2018/11/01 全球购物
竞争上岗演讲稿
2014/01/05 职场文书
新文化运动的口号
2014/06/21 职场文书
初中毕业典礼演讲稿
2014/09/09 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
水电工岗位职责
2015/02/14 职场文书
驻村工作简报
2015/07/20 职场文书
python opencv通过按键采集图片源码
2021/05/20 Python
java版 联机五子棋游戏
2022/05/04 Java/Android