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实现Linux中的du命令
Jun 12 Python
深入理解Django的中间件middleware
Mar 14 Python
python对excel文档去重及求和的实例
Apr 18 Python
Tensorflow 查看变量的值方法
Jun 14 Python
Python Web编程之WSGI协议简介
Jul 18 Python
python 对多个csv文件分别进行处理的方法
Jan 07 Python
Django网络框架之HelloDjango项目创建教程
Jun 06 Python
Python求均值,方差,标准差的实例
Jun 29 Python
python 实现快速生成连续、随机字母列表
Nov 28 Python
pandas实现DataFrame显示最大行列,不省略显示实例
Dec 26 Python
Python sublime安装及配置过程详解
Jun 29 Python
Python文件夹批处理操作代码实例
Jul 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接收POST数据,解析json数据
2013/06/28 PHP
Codeigniter操作数据库表的优化写法总结
2014/06/12 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
2015/12/21 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
jquery插件之easing使用
2010/08/19 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
2015/12/18 Javascript
Angularjs中如何使用filterFilter函数过滤
2016/02/06 Javascript
javascript-解决mongoose数据查询的异步操作
2016/12/22 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
详谈js模块化规范
2017/07/07 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
JavaScript对象拷贝与赋值操作实例分析
2018/12/10 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
python中的reduce内建函数使用方法指南
2014/08/31 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
Python实现TCP/IP协议下的端口转发及重定向示例
2016/06/14 Python
python3.4用函数操作mysql5.7数据库
2017/06/23 Python
Python实现购物车功能的方法分析
2017/11/10 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
2018/02/06 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
Python 如何优雅的将数字转化为时间格式的方法
2019/09/26 Python
100行Python代码实现每天不同时间段定时给女友发消息
2019/09/27 Python
Pytorch自己加载单通道图片用作数据集训练的实例
2020/01/18 Python
python 如何将office文件转换为PDF
2020/09/22 Python
预订全球最佳旅行体验:Viator
2018/03/30 全球购物
.net软件工程师应聘上机试题
2015/03/10 面试题
项目经理任命书范本
2014/06/05 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
在项目中使用redis做缓存的一些思路
2021/09/14 Redis
python_tkinter事件类型详情
2022/03/20 Python
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技
Golang ort 中的sortInts 方法
2022/04/24 Golang