Python爬取三国演义的实现方法
作者:bluescorpio 发布时间:2022-12-11 20:07:37
标签:python,爬取,网页
本文的爬虫教程分为四部:
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>
总结
0
投稿
猜你喜欢
- 权限级别划分如下:①、院长和财务科长:不能输入,可以无限制查询、统计;②、副院长:不能输入,可以查询、统计其分管部门的帐务;③、部门领导:不
- 上次学会了爬取图片,这次就想着试试爬取商家的联系电话,当然,这里纯属个人技术学习,爬取过后及时删除,不得用于其它违法用途,一切后果自负。首先
- 1. 停应用层的各种程序。 2. 停oralce的监听进程: $lsnrctl stop 3. 在独占的系统用户下,备份控制文件: SQL&
- 当用户的页面需要动态加载iframe 时, 如果iframe的src中包传中文参数会出现编码错误;必须加编码,然后再解码。 编码:encod
- 简介:轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法,所以边缘提取的阈值选定会影响最终轮廓发现结果。代码如下:import cv2 as
- 一、开发工具**Python****版本:**3.6.4相关模块:DecryptLogin模块;argparse模块;以及一些Python自
- 在本教程中,我们将构建一个程序,该程序可以使用流行的计算机视觉库 OpenCV 确定对象的方向(即以度为单位的旋转角度)。最常见的现实世界用
- 一张损坏的表的症状通常是查询意外中断并且你能看到例如这些错误:◆ “tbl_name.frm”被锁定不能改变。◆ 不能找到文件“tbl_na
- 当我们在使用TestNG时,发现它有一个非常好用的参数化功能。当你的测试用例有固定的参数和断言结果时,它可以相似用例的节省用例的个数。例子如
- 源码安装Python第三方库几乎都可以在github或者 pypi上找到源码。源码包格式大概有zip 、 tar.zip、 tar.bz2。
- 背景总结统计工作中几个常用用法在python统计函数库scipy.stats的使用范例。正态分布以正态分布的常见需求为例了解scipy.st
- GitLab是一款使用MIT许可证的基于网络的Git仓库管理工具,我们可以使用它来搭建自己的Git仓库,本文将介绍如何使用Gitlab在Li
- 以如下代码为例,我们在局部作用域内使用全局变量a,需要使用global关键字进行声明。否则代码会不可用。a = 100def fun():&
- 本机中原pyinstaller版本为3.5版本,本打算通过 pip install --upgrade pyinstaller进行升级,竟然
- 有很多原因需要控制用户访问站点的某部分。一个简单原始的限制方法是检查 request.user.is_authenticated() ,然后
- ERROR 1819 (HY000): Your password does not satisfy the current policy
- 不知道怎么忽然想看这个,呵呵 小我的python的反shell的代码 #!/usr/bin/python # Python&nbs
- 简单概述js变量可以划分为两种不同的数据类型:基本类型:undefined、null、Boolean、Number、String、Symbo
- 例如:from multiprocessing import Pooldef f(x):return x*xpool = Pool(proc
- 实例如下:$("#stream_title").val().trim().replace(/\s/g,"&qu