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实现的简单文件传输服务器和客户端
Apr 08 Python
Python中的random()方法的使用介绍
May 15 Python
利用Python命令行传递实例化对象的方法
Nov 02 Python
解决python3 urllib中urlopen报错的问题
Mar 25 Python
Python Pandas批量读取csv文件到dataframe的方法
Oct 08 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
Aug 28 Python
Pytorch中的自动求梯度机制和Variable类实例
Feb 29 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
Mar 10 Python
Python中remove漏删和索引越界问题的解决
Mar 18 Python
在python中修改.properties文件的操作
Apr 08 Python
Python 实现自动完成A4标签排版打印功能
Apr 09 Python
Jupyter notebook快速入门教程(推荐)
May 18 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批量采集下载美女图片的实现代码
2013/06/03 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
2013/06/27 PHP
PHP中-&gt;和=&gt;的含义及使用示例解析
2020/08/06 PHP
JavaScript 对象模型 执行模型
2010/10/15 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
2016/02/25 Javascript
BootStrap selectpicker
2016/06/20 Javascript
老生常谈JavaScript面向对象基础与this指向问题
2017/10/16 Javascript
vue实现底部菜单功能
2018/07/24 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
2019/07/19 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
vue element el-transfer增加拖拽功能
2021/01/15 Vue.js
[48:00]EG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/29 DOTA
Python中实现结构相似的函数调用方法
2015/03/10 Python
Python Numpy 数组的初始化和基本操作
2018/03/13 Python
numpy.std() 计算矩阵标准差的方法
2018/07/11 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
python实现旋转和水平翻转的方法
2018/10/25 Python
Django组件cookie与session的具体使用
2019/06/05 Python
Django应用程序入口WSGIHandler源码解析
2019/08/05 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
2019/08/20 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
用CSS3实现Win8风格的方格导航菜单效果
2013/04/10 HTML / CSS
HTML5的自定义属性data-*详细介绍和JS操作实例
2014/04/10 HTML / CSS
四方通行旅游网:台湾订房、出国旅游
2017/09/20 全球购物
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
请解释接口的显式实现有什么意义
2012/05/26 面试题
Linux文件系统类型
2012/02/15 面试题
大学生素质拓展活动方案
2014/02/11 职场文书
电子商务系毕业生自荐信
2014/05/29 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
签证工作证明模板
2015/06/15 职场文书
排球赛新闻稿
2015/07/17 职场文书
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python
Python实现将多张图片合成MP4视频并加入背景音乐
2022/04/28 Python