爬虫小练习:爬取内涵段子指定页数段子(可控制是否继续爬取)

原创 2018年04月16日 17:17:06
import urllib.request
import re


# pattern1 = re.compile('<a\shref="(.*?)"\sclass="title"\stitle')  匹配完整段子内容链接
#
# content_url_list = pattern1.findall(html)
#
# pattern2 = re.compile('</p>(.*?)<div\sclass="ad610">',re.S)  匹配点开段子标题后完整段子的内容
#
# content_list = pattern2.findall(html)
#
# http://www.neihan8.com/article/index_3.html
#
# User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36


class Spider:
    def __init__(self,page):
        self.page = page
        self.switch = True  # 爬取开关,决定用户是否继续爬取页面信息


    def loadPage(self):
        '''
            下载页面
        '''
        # 下载第一部分页面来获取完整段子内容的连接,且打开链接
        print("页面下载中......")
        if self.page == "1":
            url = "http://www.neihan8.com/article/index.html"
        else:
            url = "http://www.neihan8.com/article/index_"+ self.page +".html"
        headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}
        request = urllib.request.Request(url,headers=headers)
        response = urllib.request.urlopen(request)
        html = response.read().decode("utf-8")
        # print(html)
        pattern1 = re.compile('<a\shref="(.*?)"\sclass="title"\stitle')
        content_url_list = pattern1.findall(html)
        print("页面下载完成!")
        for content_url in content_url_list:
            # print(url)
            content_url = "http://www.neihan8.com" + content_url
            request = urllib.request.Request(content_url, headers=headers)
            response = urllib.request.urlopen(request)
            html = response.read().decode("utf-8")
            pattern2 = re.compile('</p>(.*?)<div\sclass="ad610">', re.S)
            content_list = pattern2.findall(html)
            self.dealPage(content_list)


    def dealPage(self,content_list):
        '''
            处理每页的段子信息
        '''
        for content in content_list:
            # print(content)
            # print("-" * 30)
            content = content.replace('<p>','').replace('</p>','')
            # print(content)
            # print("-" * 30)
            self.writPage(content)


    def writPage(self,content):
        '''
            把段子信息写入文件中
        '''
        print("文件写入中......")
        with open("内涵段子第"+ self.page +"页集合.txt","a") as f:
            f.write(content)
            f.write("\n" + ("-"*50))


    def work(self):
        '''
            控制爬虫如何运行
        '''
        print("文件写入完成!感谢使用!")
        while self.switch:
            command = input("如果确定继续爬取,请按回车(退出按q):")
            if command == "q":
                self.switch = False
            else:
                page_num = input("请输入要再次爬取的页码:")
                self.page = page_num
                self.loadPage()


if __name__ == '__main__':
    page_num = input("请输入要爬取的页码:")
    Spider = Spider(page_num)
    Spider.loadPage()
    Spider.work()

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011304490/article/details/79963408

Python爬虫爬取内涵吧段子案例系列之八

爬取内涵吧段子案例
  • u014745194
  • u014745194
  • 2017-07-20 19:11:10
  • 1149

使用python 编写 抓取内涵段子动态图的简单爬虫

前段时间在浏览知乎的时候发现了一个关于python编写爬虫的帖子,下面是帖子的链接            www.zhihu.com/question/20899988 所以就想到了使用pyth...
  • oqqFengniao123456789
  • oqqFengniao123456789
  • 2015-04-23 21:39:54
  • 2576

用requests实现简单爬虫 内涵社区段子 (需要去重)

# 这个网站内容段子很多都是重复的,第一次没去重获取到的大多数都重复,我以为代码有错,后来用集合去重后保存全部内容,发现保存到的不重复的段子和最初抓取到的全部段子的条数差距很多! import re...
  • u011689371
  • u011689371
  • 2018-02-03 21:05:18
  • 100

Python爬虫——7-1.scrapy框架案例-爬取内涵段子

案例分析: 1.该网站的数据是保存的Json文件中的,所以要首先使用抓包工具,抓取包含该json文件的url地址作为爬取入口。爬取到的Json文件比较适合使用re正则表达式进行数据的筛选。若是数据直...
  • liyahui_3163
  • liyahui_3163
  • 2018-01-17 10:36:56
  • 220

pyhton爬虫--正则爬取内涵段子文字

背景:虚拟机ubuntu16.04 爬取内涵段子文字,replace处理字符串要求,根据客户要求要爬取的page数,将段子爬取下来:源码如下: 1 # -*- coding:utf-8 -*- 2...
  • jerechen
  • jerechen
  • 2018-02-13 20:20:21
  • 145

用python3.5抓取内涵段子并且保存到本地

因为一些资料和代码是参考网上的。所以为转载 #coding=utf-8 import time import re from bs4 import BeautifulSoup from seleni...
  • hebian8251
  • hebian8251
  • 2017-09-02 09:18:33
  • 524

Python爬虫:抓取内涵段子1000张搞笑图片-上篇(小爬虫诞生篇)

用Python爬虫抓取内涵段子1000张搞笑图片,此为上篇之小爬虫诞生篇
  • u010784236
  • u010784236
  • 2017-10-26 10:39:23
  • 1085

爬虫第四战爬取糗事百科搞笑段子

又开始了新的篇章,本熊继续一个Python小白的修行之路,这次要爬取糗事百科主页的段子,恩 。。看起来不错的样子,只是段子不能吃 ,不然,啧啧。。。 相信很多人有去糗百看段子减压的习惯,如果能把这些段...
  • KUKI123321
  • KUKI123321
  • 2016-12-14 21:54:31
  • 346

Python爬虫之爬取内涵吧段子(urllib.request)

引言 在寒假开始的时候就打算学习爬虫了,但是没有想到一入坑到现在还没有出坑,说多了都是泪 T_T 我准备介绍的这个库是我初学爬虫时候用到的,比较古老,所以我只用了一两次就转向了requests了...
  • weixin_39820793
  • weixin_39820793
  • 2018-02-25 18:23:11
  • 192

Python3.4简单爬虫实现之抓取糗事百科段子

网上的python教程大都是2.X版本的,python2.X和python3.X相比较改动比较大,好多库的用法不太一样,我安装的是3.4.1,就用3.4.1实现一下网页内容抓取 首先是库,2...
  • King_818
  • King_818
  • 2016-03-01 15:30:53
  • 3745
收藏助手
不良信息举报
您举报文章:爬虫小练习:爬取内涵段子指定页数段子(可控制是否继续爬取)
举报原因:
原因补充:

(最多只允许输入30个字)