python爬虫爬取糗事百科的段子

问题场景

之后的项目需要爬虫抓取一些信息,找个例子练练手,特此记录。

环境介绍

Windows
Python2.7
IDEA15

通用抓取流程

这里写图片描述

本文思路

1、给爬虫一个目标即网页地址及参数
2、设置一些必要的参数
3、抓取网页源代码
4、提取数据
5、保存数据(本文是保存在文件里,多数是存在数据库里)

目标

这里写图片描述

CODE

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import urllib2
import re
import os


class Spider:
    # 构造方法
    def __init__(self, url, headers):
        self.url = url
        self.headers = headers

    def spider(self, page, pattern):
        # 一共13页
        for i in range(1, page):
            # 抓取过程
            # 1、访问其中一个网页,抓取源代码
            try:
                request = urllib2.Request(url=self.url % str(i), headers=self.headers)
                response = urllib2.urlopen(request)
                content = response.read()
            except urllib2.HTTPError as e:
                print e
                exit()
            except urllib2.URLError as e:
                print e
                exit()
            # 2、提取你的数据
            regex = re.compile(pattern, re.S)
            items = re.findall(regex, content)
            # 3、保存数据
            path = 'qiubai'
            if not os.path.exists(path):
                os.makedirs(path)
            file_path = path + "/qiubai" + str(i) + ".txt"
            file = open(file_path, 'w')
            for item in items:
                # 把\n去掉,<br/>换成\n
                item = item.replace('\n', '').replace('<br/>', '\n')
                item += "\n\n"
                file.write(item)

            file.close()


if __name__ == '__main__':
    url = 'https://www.qiushibaike.com/text/page/%s/'
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36'}
    # 结合你的网页写表达式
    pattern = '<div class="content">.*?<span>(.*?)</span>.*?</div>'
    s = Spider(url, headers)
    s.spider(14, pattern)

结果截图

结果文件夹
这里写图片描述

结果文件
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值