我是一仅仅百度贴吧的小爬虫

news/2024/7/19 9:59:53 标签: 爬虫, python

整体功能:查看特定帖子楼主的发言(不包括图片)

前段时间大概看了python的语法,可是确实第一次用python来写东西。非常久之前就想学python。学爬虫了。如今最终開始了!

谢了自己的第一个爬虫,非常开心O(∩_∩)O 认为学东西兴趣非常重要。爬虫真的好玩!

整个功能的实现含有两个类,一个是工具类Tool,还有一个是百度贴吧的爬虫类BaiduTieba,提取网页的内容主要还是正則表達式。代码例如以下:

python"># -*- coding:utf-8 -*-
import urllib
import urllib2
import re

#工具类,用于去除一些链接之类的特殊标签
class Tool:
    #去除图片链接
    removeImage = re.compile('<img class="BDE_Image".*?>')
    #去除<br>
    removeBR = re.compile('<br>')
    #去除超链接
    removeHref = re.compile('<a href=.*?</a>')

    def replaceStrange(self,x):
        x = re.sub(self.removeImage,"",x)
        x = re.sub(self.removeBR,"\n",x)
        x = re.sub(self.removeHref,"",x)
        return x.strip()

#百度贴吧爬虫
class BaiduTieba:
    def __init__(self,baseUrl,seeLZ):
        #帖子基址
        self.baseUrl = baseUrl
        #仅仅看楼主seeLZ=1
        self.seeLZ = '?see_lz='+str(seeLZ)
        self.tool = Tool()

    def getPage(self,pageNum):
        try:
            url = self.baseUrl + self.seeLZ + '&pn=' + str(pageNum)
            request = urllib2.Request(url)
            response = urllib2.urlopen(request)
            #print response.read()
            return response.read().decode('utf-8')
        except urllib2.URLError,e:
            if hasattr(e,"reason"):
                print e.reason
                return None

    def getTitle(self):
        page = self.getPage(1)
        pattern = re.compile('<h1 class="core_title_txt.*?>(.*?)</h1>',re.S)
        result = re.search(pattern,page)
        if result:
            print "success!"
            print result.group()
        else:
            print "failed!"

    def getContent(self,page):
        #正則表達式匹配
        pattern = re.compile('<div id="post_content_.*?>(.*?)</div>',re.S)
        items = re.findall(pattern,page)
        floor = 1
        for item in items:
            print '\n',floor,u"楼-----------------------------------------------------------------------------------"
            print self.tool.replaceStrange(item)
            floor += 1

print u"请输入帖子编号:"
baseURL = 'http://tieba.baidu.com/p/' + str(raw_input(u'http://tieba.baidu.com/p/'))
baidu = BaiduTieba(baseURL,1)
baidu.getContent(baidu.getPage(1))

效果如图(扒一扒这些年朋友之上恋人未满的逗逼):
这里写图片描写叙述


http://www.niftyadmin.cn/n/1478893.html

相关文章

vue 日期面板_手写Vue日历组件

export class Lunar {//初一显示月份//节日按照优先级替换日private dataObj: any {month:"",day:"",holiday: [],animal:"",ganZhi:""};//闰几月private leapM: number 0;//当前年份的农历numprivate leapNumber: number 0;//天干p…

C语言如何制作dIL文件,C语言怎么加循环

完整修改好的程序#include #include //错void dayingz();void menu();void dayingdaosanjiaoxing();void dayingn();void dayingx();void main(){menu();}void menu(){int select;printf(" 打印图形 \n");printf("***********************************\n&q…

Error Page在IE下不能转发的问题

这是IE自身的设定导致的,经过百度,找到几个解决办法: 1, IE设定 工具-->Internet选项-->高级--->显示http友好错误信息(取消选择) , 这样就可以了 2, 设置指定错误页页状态为正常,来告诉IE这不是一个服务器错误, 从而不显示IE的自定义错误页 <% response.…

Thinkphp8.0版本框架发布

ThinkPHP 8 是一款基于 PHP 语言开发的开源框架,它提供了一系列的工具和功能,帮助开发者快速构建高效、可靠的 Web 应用程序。以下是 ThinkPHP 8 的一些详细介绍: 高性能:ThinkPHP 8 采用了全新的架构设计,优化了性能,提升了框架的响应速度和并发能力。 简单易用:ThinkP…

Unicode 与 UTF-8

2019独角兽企业重金招聘Python工程师标准>>> 阮一峰老师对普及计算机基础技术功不可没&#xff0c;但毕竟老师不是神&#xff0c;因此也避免不了对某些概念有一些错误的理解&#xff0c;《字符编码笔记&#xff1a;ASCII&#xff0c;Unicode 和 UTF-8 》 是阮老师10…

独立任务最优调度 c语言,动态规划独立任务最优调度

用两台处理机A和B处理n个作业。设第i个作业交给A处理需要时间ai&#xff0c;交给B处理需要时间bi。由于各作业的特点和机器的性能关系&#xff0c;ai和bi之间没有明确的大小关系。既不能将一个作业分开由2台机器处理&#xff0c;也没有一台机器能同时处理2个作业。设计一个动态…

hutool读取和导出excel_HuTool工具类使用之Excel文档的导入导出

HuTool工具类使用之Excel文档的导入导出前言在日常的工作开发中&#xff0c;Excel的导入和导出是必不可少的&#xff0c;如果自己写相应的导入导出方法&#xff0c;会显得十分繁琐&#xff0c;本文采用Hutool工具类实现的Excel导入导出功能&#xff0c;可以大幅度减少今后开发中…

POJ 1180 Batch Scheduling

POJ_1180 不妨设T[i]表示T1T2…Ti&#xff0c;F[i]表示F1F2…Fi&#xff0c;如果根据题目中的计算公式来算的话&#xff0c;就会得到f[i]min{f[j](out[j]ST[i]-T[j])*(F[i]-F[j])}&#xff0c;其中out[j]表示执行完j所在的batch的时间&#xff0c;这时我们就会发现状态转移方程…