本次实战项目适合,有一定Python语法知识的小白学员。本人也是根据一些网上的资料,自己摸索编写的内容。有不明白的童鞋,欢迎提问。

目的:爬取百度小说吧中的原创小说《猎奇师》部分小说内容

链接:http://tieba.baidu.com/p/4792877734

首先,自己定义一个类,方便使用。其实类就像一个“水果篮”,这个“水果篮”里有很多的“水果”,也就是我们类里面定义的变量啊,函数啊等等,各种各样的。每一种"水果"都有自己的独特的口味,也即是各个函数实现的功能各不相同。

然后,按照这个思路,既然要爬取小说,那么肯定要有目标网页的地址,也就是上面我给的那个连接。其实就像买水果之前,我们要找到水果店。

打开目标贴吧后,会发现里面有很多的贴子,有楼主发的,还有读者评论的,很多很杂。不过,没关系。度娘给了我们一个强大的功能,只看楼主。这就是我们的切入点。点击只看楼主按钮,哈哈,此时呈现在眼前的就是楼主的主要内容啦。

相应的,此时的网页也有所改变,地址上多了一个只看楼主的标记 http://tieba.baidu.com/p/4792877734?see_lz=1

所以,我们在定义类中的初始化函数时,就要有这个标记。

接下来,我们开始在选择不同口味的水果。我们要先获取网页的源代码,就需要有一个getPage的函数。函数里需要有我们的页码,注意我们选择不同也的小说,会发现,我们的地址也是有稍稍变动的,比如:第二页连接:http://tieba.baidu.com/p/4792877734?see_lz=1&pn=2     多了&pn=2。这个我们要整合一下。

(未完>>>>>>>>>明晚继续)

下面是我的代码:

 #-*- coding:utf-8 -*-
import urllib
import urllib2
import re # 百度小说吧 原创小说《猎奇师》
# 连接http://tieba.baidu.com/p/4792877734?see_lz=1
# 第二页连接:http://tieba.baidu.com/p/4792877734?see_lz=1&pn=2
class LQS:
def __init__(self,daseUrl,seeLZ):
self.daseUrl = daseUrl
self.seeLZ ='?see_lz=' + str(seeLZ)
# 传入页码,获取网页源代码
def getPage(self,pageNum):
try:
# 拼接,地址 + 楼主参数 + 页数
url = self.daseUrl + self.seeLZ + '&pn=' + str(pageNum)
request = urllib2.Request(url)
response = urllib2.urlopen(request)
return response.read()
except Exception,e:# 处理异常
print e
# 获取标题
def getTitle(self,pageNum):
html = self.getPage(pageNum)
reg = re.compile(r'<title>【原创】恐怖故事 (.*?)_小说吧_百度贴吧</title>')
items = re.findall(reg,html)
# 将标题写入文件
for item in items:
f = open('lqshi.txt','w') # 文件名最好是英文,中文识别不了
f.write('标题' + '\t\t' + item)
f.close()
return items
# 获取正文
def getContent(self,pageNum):
html = self.getPage(pageNum)
reg = re.compile(r'class="d_post_content j_d_post_content "> (.*?)</div><br>')
req = re.findall(reg,html)
# 将标题写入文件
for i in req:
removeAddr = re.compile('<a.*?</a>')
i = re.sub(removeAddr,"",i)# 找到并替换
i = i.replace("<br>","\n ")
f = open('lqshi.txt','a')# 此处是写入正文内容,所以用a
f.write( '\n\n\n' + i)
f.close()
return i daseURL = 'http://tieba.baidu.com/p/4792877734'
lqShi = LQS(daseURL,1)
print "爬虫已启动..."
for i in range(4):
lqShi.getTitle(i)
lqShi.getContent(i)
print "正在抓取第%s页的内容" % (i+1)

Python实战项目网络爬虫 之 爬取小说吧小说正文的更多相关文章

  1. 如何用python爬虫从爬取一章小说到爬取全站小说

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http ...

  2. scrapy进阶(CrawlSpider爬虫__爬取整站小说)

    # -*- coding: utf-8 -*- import scrapy,re from scrapy.linkextractors import LinkExtractor from scrapy ...

  3. python网络爬虫《爬取get请求的页面数据》

    一.urllib库 urllib是python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在python3中的为urllib.request和urllib. ...

  4. python网络爬虫--简单爬取糗事百科

    刚开始学习python爬虫,写了一个简单python程序爬取糗事百科. 具体步骤是这样的:首先查看糗事百科的url:http://www.qiushibaike.com/8hr/page/2/?s=4 ...

  5. Python网络爬虫_爬取Ajax动态加载和翻页时url不变的网页

    1 . 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新 ...

  6. Python网络爬虫 | Scrapy爬取妹子图网站全站照片

    根据现有的知识,写了一个下载妹子图(meizitu.com)Scrapy脚本,把全站两万多张照片下载到了本地. 网站的分析 网页的网址分析 打开网站,发现网页的网址都是以 http://www.mei ...

  7. Python实战:网络爬虫都能干什么?

    整站下载器:siteSucker https://blog.csdn.net/l_215851356/article/details/54377582 http://python.jobbole.co ...

  8. python3编写网络爬虫19-app爬取

    一.app爬取 前面都是介绍爬取Web网页的内容,随着移动互联网的发展,越来越多的企业并没有提供Web页面端的服务,而是直接开发了App,更多信息都是通过App展示的 App爬取相比Web端更加容易 ...

  9. 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程

    点击了解更多Python课程>>> 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程 适用人群: 即将毕业的大学生,工资低工作重的白领,渴望崭露头角的职场新人, ...

随机推荐

  1. AJAX实现简单的注册页面异步请求

    p { margin: 0px; padding: 0px } AJAX简介 (1)AJAX = 异步 JavaScript 和 XML. (2)AJAX 是一种用于创建快速动态网页的技术. (3)通 ...

  2. Using View and Data API with Meteor

    By Daniel Du I have been studying Meteor these days, and find that Meteor is really a mind-blowing f ...

  3. 利用NetworkExtension库配置VPN

    VPN简单说就是连接局域网的一个通道.Ios8之后苹果增加了一个VPN的接口NEVPNManager,它可以方便的添加VPN连接. 首先在你的Xcode内,TARGETS->Capabiliti ...

  4. Android 自带后退按钮的使用

    一.后退按钮有两种定义,分别是向上按钮和返回按钮:向上按钮:偏向于一种父子关系:返回按钮:反映的是一种前后关系 向上按钮:在清单文件中需要添加后退功能按钮的Activity中添加parentActiv ...

  5. Android 手机卫士--绑定sim卡序列号

    现在开始具体 处理每一个导航页面的逻辑,首先看第二个导航页 本文地址:http://www.cnblogs.com/wuyudong/p/5949775.html,转载请注明出处. 这里需要实现绑定s ...

  6. hadoop作业调度策略

    一个Mapreduce作业是通过JobClient向master的JobTasker提交的(JobTasker一直在等待JobClient通过RPC协议提交作业),JobTasker接到JobClie ...

  7. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  8. 跳入linux的第一个坑-因为安装Ubuntu导致的硬盘被误格的恢复.(记TestDisk使用记录)

    不看废话,直接跳到操作说明 前几日心血来潮想把家中的旧笔记本换成Linux操作系统,算是在业余生活中正式投入Linux的怀抱.说干就干,发行版选择了Ubuntu,下载了Ubuntu16.04的ISO, ...

  9. [转]用Middleware给ASP.NET Core Web API添加自己的授权验证

    本文转自:http://www.cnblogs.com/catcher1994/p/6021046.html Web API,是一个能让前后端分离.解放前后端生产力的好东西.不过大部分公司应该都没能做 ...

  10. Python学习实践-----打印日历

    使用python语言实现在控制台打印日历 输入年.月.日 输出对应日历,指定的日数输出为'--' 程序没有做严格的输入验证,故输入整数即可. 以下为没有优化的源码: print_calendar.py ...