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程序设计入门(4)模块和包
Jun 16 Python
win7 下搭建sublime的python开发环境的配置方法
Jun 18 Python
简单谈谈Python中的闭包
Nov 30 Python
python使用super()出现错误解决办法
Aug 14 Python
解决tensorflow模型参数保存和加载的问题
Jul 26 Python
Python Pexpect库的简单使用方法
Jan 29 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
Jun 05 Python
使用Python完成15位18位身份证的互转功能
Nov 06 Python
Python GUI库PyQt5样式QSS子控件介绍
Feb 25 Python
Selenium 滚动页面至元素可见的方法
Mar 18 Python
PyQt5 显示超清高分辨率图片的方法
Apr 11 Python
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
Jun 11 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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
PHP5 面向对象(学习记录)
2009/12/02 PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
基于jquery的让页面控件不可用的实现代码
2010/04/27 Javascript
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
2013/03/21 Javascript
js实现图片无缝滚动特效
2020/03/19 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
微信小程序开发实现的IP地址查询功能示例
2019/03/28 Javascript
微信小程序(订阅消息)功能
2019/10/25 Javascript
关于angular引入ng-zorro的问题浅析
2020/09/09 Javascript
JavaScript canvas实现文字时钟
2021/01/10 Javascript
python高并发异步服务器核心库forkcore使用方法
2013/11/26 Python
Python使用urllib模块的urlopen超时问题解决方法
2014/11/08 Python
Python操作MongoDB数据库的方法示例
2018/01/04 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
python如果快速判断数字奇数偶数
2019/11/13 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
html5指南-3.如何实现html元素拖拽功能
2013/01/07 HTML / CSS
科颜氏美国官网:Kiehl’s美国
2017/01/31 全球购物
创业计划书——互联网商机
2014/01/12 职场文书
前厅收银主管岗位职责
2014/02/04 职场文书
授权委托书范本
2014/04/03 职场文书
新闻发布会策划方案
2014/06/12 职场文书
医院我们的节日活动实施方案
2014/08/22 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
2015年企业工作总结范文
2015/04/28 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书
win10系统计算机图标怎么调出来?win10调出计算机图标的方法
2022/08/14 数码科技