python爬虫-抓取内涵吧内涵段子

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 这是个python简易爬虫,主要使用了requests和re模块,适合入门。出处:https://github.com/jingsupo/python-spider/blob/master/day03/04neihanba.

这是个python简易爬虫,主要使用了requests和re模块,适合入门。
出处:https://github.com/jingsupo/python-spider/blob/master/day03/04neihanba.py

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

import requests, re, time


class Neihanspider(object):
    def __init__(self):
        self.base_url = 'http://www.neihan8.com/article/list_5_'
        self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"}
        # 第一层解析的正则表达式 正则里面的符号不能改,必须照原样复制过来
        self.first_pattern = re.compile(r'<div class="f18 mb20">.*?</div>', re.S)
        # 第二层解析的正则表达式 去除所有标签 字符实体 空白 全角空格
        self.second_pattern = re.compile(r'<.*?>|&.*?;|\s|  ')

    # 发送请求
    def send_request(self, url):
        time.sleep(2)
        try:
            response = requests.get(url, headers=self.headers)
            return response.content
        except Exception as e:
            print e

    # 写入文件
    def write_file(self, data, page):
        with open('04neihanba.txt', 'a') as f:
            filename = '第' + str(page) + '页的段子\n'
            print filename
            f.write('-' * 10 + '\n')
            f.write(filename)
            f.write('-' * 10 + '\n')

            for first_data in data:
                # 第二层解析
                content = self.second_pattern.sub('', first_data)
                f.write(content)
                # 在每个段子结束的时候加个换行
                f.write('\n\n')

    # 调度方法
    def start_work(self):
        for page in range(1, 5):
            # 拼接url
            url = self.base_url + str(page) + '.html'

            # 发送请求
            data = self.send_request(url)

            # 转码
            data = data.decode('gbk').encode('utf-8')

            # 第一层解析
            data_list = self.first_pattern.findall(data)

            # 将数据写入文件
            self.write_file(data_list, page)


if __name__ == '__main__':
    spider = Neihanspider()
    spider.start_work()
目录
相关文章
|
14天前
|
数据采集 JSON 算法
Python爬虫——模拟登录
Python爬虫——模拟登录
90 3
|
14天前
|
数据采集 JSON 算法
Python爬虫——基于JWT的模拟登录爬取实战
Python爬虫——基于JWT的模拟登录爬取实战
37 1
Python爬虫——基于JWT的模拟登录爬取实战
|
11天前
|
数据采集 缓存 Java
Python vs Java:爬虫任务中的效率比较
Python vs Java:爬虫任务中的效率比较
|
5天前
|
数据采集 Web App开发 JavaScript
Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容
本文介绍了如何使用Selenium爬虫技术抓取抖音评论,通过模拟鼠标悬停操作和结合代理IP、Cookie及User-Agent设置,有效应对动态内容加载和反爬机制。代码示例展示了具体实现步骤,帮助读者掌握这一实用技能。
Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容
|
10天前
|
数据采集 Web App开发 数据可视化
Python爬虫教程:Selenium可视化爬虫的快速入门
Python爬虫教程:Selenium可视化爬虫的快速入门
|
14天前
|
数据采集 JavaScript 前端开发
JavaScript逆向爬虫——使用Python模拟执行JavaScript
JavaScript逆向爬虫——使用Python模拟执行JavaScript
20 2
|
14天前
|
数据采集 前端开发 NoSQL
Python编程异步爬虫实战案例
Python编程异步爬虫实战案例
26 2
|
15天前
|
数据采集 消息中间件 API
Python爬虫验证码识别——手机验证码的自动化处理
Python爬虫验证码识别——手机验证码的自动化处理
21 0
|
15天前
|
数据采集 JSON 网络协议
Python编程异步爬虫——aiohttp的使用
Python编程异步爬虫——aiohttp的使用
|
15天前
|
数据采集 调度 Python
Python编程异步爬虫——协程的基本原理(一)
Python编程异步爬虫——协程的基本原理(一)
10 0