抓取网页生成电子书(网上无法下载的“小说在线阅读”内容?有种Python2.7基础知识 )

优采云 发布时间: 2021-09-13 20:05

  抓取网页生成电子书(网上无法下载的“小说在线阅读”内容?有种Python2.7基础知识

)

  您是否担心“小说在线阅读”内容无法在网上下载?还是一些文章内容让你有采集的冲动,却找不到下载链接?是否有写一个程序来完成所有事情的冲动?你有没有学过python,想找个东西来展示你的拳头并告诉别人“兄弟真棒!”?那么让我们开始吧!哈哈~

  嗯,最近刚写了很多Yii,想找点东西调整一下……= =

  这个项目的目的是研究。对于所有版权问题,我们都站在作者一边。以阅读盗版小说为目的的读者,请自己面对墙!

  毕竟,我们要做的就是从网页中抓取小说文本的内容。我们的研究对象是全本小说网...再次声明,我们不对任何版权负责....

  开头最基本的内容就是抓取某一章节的内容。

  环境:Ubuntu、Python 2.7

  基础知识

  这个程序涉及到几个知识点,这里罗列一下。不细说,百度上就有很多。

  1.urllib2 模块的请求对象用于设置HTTP请求,包括爬取的url,以及伪装成浏览器的代理。然后是urlopen和read方法,这两个方法都很容易理解。

  2.chardet 模块,用于检测网页的编码。网页抓取数据时很容易遇到乱码的问题。为了判断网页是gtk还是utf-8编码,使用chardet的detect函数来检测。使用Windows的同学可以在这里下载,解压到python的lib目录下。

  3.decode函数将字符串从某种编码转换为unicode字符,encode将unicode字符转换为指定编码格式的字符串。

  4.re 模块正则表达式应用。搜索功能可以找到匹配正则表达式的项,replace替换匹配的字符串。

  思路分析:

  我们选择的网址是,斗罗大陆第一章。你可以查看网页的源码,你会发现只有一个内容标签收录了所有章节的内容,所以你可以将内容标签与正则匹配并抓取它。试着把这部分内容打印出来,你会发现很多

  和 &nbsp,

  用换行符替换,&nbsp是网页中的占位符,即空格,用空格替换即可。这一章的内容非常漂亮。为了完整起见,我们也使用常规规则爬下标题。

  程序

<p>

# -*- coding: utf-8 -*-

import urllib2

import re

import chardet

class Book_Spider:

def __init__(self):

self.pages = []

# 抓取一个章节

def GetPage(self):

myUrl = "http://www.quanben.com/xiaoshuo/0/910/59302.html";

user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'

headers = { 'User-Agent' : user_agent }

request = urllib2.Request(myUrl, headers = headers)

myResponse = urllib2.urlopen(request)

myPage = myResponse.read()

#先检测网页的字符编码,最后统一转为 utf-8

charset = chardet.detect(myPage)

charset = charset['encoding']

if charset == 'utf-8' or charset == 'UTF-8':

myPage = myPage

else:

myPage = myPage.decode('gb2312','ignore').encode('utf-8')

unicodePage = myPage.decode("utf-8")

try:

#抓取标题

my_title = re.search('(.*?)',unicodePage,re.S)

my_title = my_title.group(1)

except:

print '标题 HTML 变化,请重新分析!'

return False

try:

#抓取章节内容

my_content = re.search('(.*?)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线