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原始套接字编程示例分享
Feb 21 Python
Python配置文件解析模块ConfigParser使用实例
Apr 13 Python
以windows service方式运行Python程序的方法
Jun 03 Python
python数组过滤实现方法
Jul 27 Python
Python单例模式实例详解
Mar 01 Python
python爬虫使用cookie登录详解
Dec 27 Python
Django如何将URL映射到视图
Jul 29 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
Aug 18 Python
Python字符串、列表、元组、字典、集合的补充实例详解
Dec 20 Python
Python netmiko模块的使用
Feb 14 Python
Python图片验证码降噪和8邻域降噪
Aug 30 Python
Python下载商品数据并连接数据库且保存数据
Mar 31 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
ThinkPHP实现的rsa非对称加密类示例
2018/05/29 PHP
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
jquery 鼠标滑动显示详情应用示例
2014/01/24 Javascript
jquery队列函数用法实例
2014/12/16 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
JavaScript中日期的相关操作方法总结
2015/10/24 Javascript
纯javascript响应式树形菜单效果
2015/11/10 Javascript
JQuery日历插件My97DatePicker日期范围限制
2016/01/20 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
2016/10/26 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
2017/01/10 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
2017/01/11 Javascript
Javascript中字符串和数字的操作方法整理
2017/01/22 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
对node.js中render和send的用法详解
2018/05/14 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
2018/11/15 Javascript
js里面的变量范围分享
2020/07/18 Javascript
[07:43]《辉夜杯》公开赛晋级外卡赛战队—TRG训练生活探秘
2015/12/11 DOTA
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
Python中模块string.py详解
2017/03/12 Python
Python 实现简单的shell sed替换功能(实例讲解)
2017/09/29 Python
使用python实现链表操作
2018/01/26 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
Selenium及python实现滚动操作多种方法
2020/07/21 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
个人课题方案
2014/05/08 职场文书
分公司任命书
2014/06/06 职场文书
2014年除四害工作总结
2014/12/06 职场文书
质检员岗位职责
2015/02/03 职场文书
2015年酒店工作总结
2015/04/28 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
Linux安装apache服务器的配置过程
2021/11/27 Servers
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
2022/04/07 Servers