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 15 Python
分享Python开发中要注意的十个小贴士
Aug 30 Python
pandas通过索引进行排序的示例
Nov 16 Python
python中dir()与__dict__属性的区别浅析
Dec 10 Python
使用python读取.text文件特定行的数据方法
Jan 28 Python
python写程序统计词频的方法
Jul 29 Python
Python提取PDF内容的方法(文本、图像、线条等)
Sep 25 Python
Python Selenium安装及环境配置的实现
Mar 17 Python
Django-xadmin+rule对象级权限的实现方式
Mar 30 Python
Python内置异常类型全面汇总
May 28 Python
解决tensorflow 释放图,删除变量问题
Jun 23 Python
用python自动生成日历
Apr 24 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 pki加密技术(openssl)详解
2013/07/01 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
jquery slibings选取同级其他元素的实现代码
2013/11/15 Javascript
响应式表格之固定表头的简单实现
2016/08/26 Javascript
浅谈JS之iframe中的窗口
2016/09/13 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
浅谈angularjs中响应回车事件
2017/04/24 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
vue用BMap百度地图实现即时搜索功能
2019/09/26 Javascript
vue项目中极验验证的使用代码示例
2019/12/03 Javascript
谈谈JavaScript中的垃圾回收机制
2020/09/17 Javascript
[01:03:36]Ti4 循环赛第三日DK vs Titan
2014/07/12 DOTA
Python中urllib2模块的8个使用细节分享
2015/01/01 Python
python杀死一个线程的方法
2015/09/06 Python
Python实现Logger打印功能的方法详解
2017/09/01 Python
Django中间件工作流程及写法实例代码
2018/02/06 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
2018/10/21 Python
Python拼接字符串的7种方法总结
2018/11/01 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
2019/07/11 Python
在python Numpy中求向量和矩阵的范数实例
2019/08/26 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
Athleta官网:购买女士瑜伽服、技术运动服和休闲运动服
2020/11/12 全球购物
SQL面试题
2013/12/09 面试题
大学生自我鉴定范文模板
2014/01/21 职场文书
行政内勤岗位职责
2014/04/07 职场文书
婚纱摄影师求职信范文
2014/04/17 职场文书
党员民主生活会个人整改措施材料
2014/09/16 职场文书
上市公司董事长岗位职责
2015/04/16 职场文书
考试后的感想
2015/08/07 职场文书
蔬果开业典礼发言稿应该怎么写?
2019/09/03 职场文书
nginx中proxy_pass各种用法详解
2021/11/07 Servers
js不常见操作运算符总结
2021/11/20 Javascript