Python爬虫(二)爬百度贴吧楼主发言
2024-10-09 02:59:28
爬取电影吧一个帖子里的所有楼主发言:
# python2
# -*- coding: utf-8 -*- import urllib2
import string
import re class Baidu_Spider:
feature_pattern = re.compile(r'id="post_content.*?>\s+(.*?)</div>', re.S)
replaceList = [(''', '\''), ('"', '\"')] def __init__(self, url):
self.url = url + '?see_lz=1' def crawl_tieba_lz(self):
begin_page = urllib2.urlopen(self.url).read()
self.print_page_title(begin_page)
count = self.get_page_count(begin_page)
self.handle_data(count) def handle_data(self, count):
f = open('tieba_lz.txt', 'w+')
for i in range(count):
url = self.url + '&pn=' + str(i+1)
hint = '第' + str(i+1) + '页' print '正在下载%s: %s' % (hint, url)
page = urllib2.urlopen(url).read()
features = re.findall(self.feature_pattern, page)
print hint + '下载完成'
print '共有%d条记录' % len(features) f.write(hint + ':\n')
for feature in features:
feature = self.handle_record(feature)
print feature
f.write(feature + '\n\n')
f.close()
print 'done' def handle_record(self, record):
record = re.sub(r'(<|</)br>', '\n', record)
record = re.sub(r'<.*?>', '', record)
for item in self.replaceList:
record = record.replace(item[0], item[1])
return record def get_page_count(self, page):
result = re.search(r'class="red">(\d+?)</span>', page, re.S)
if result:
count = int(result.group(1))
print '一共%d页' % count
else:
count = 0;
print '无法获取页数'
return count def print_page_title(self, page):
result = re.search(r'<h1.*?>(.*?)</h1>', page, re.S)
if result:
title = result.group(1)
print '标题: %s' % title
else:
print '无法获取标题' spider = Baidu_Spider('http://tieba.baidu.com/p/4082863285')
spider.crawl_tieba_lz()
最新文章
- $x^2+y^2=c^2$
- 在iOS APP中使用H5显示百度地图时如何支持HTTPS?
- 扫盲贴000---关于python中的if __name__ == &#39;__main__&#39;
- C#多线程的异步委托/调用
- C++ 内联函数笔记
- MyEclipse下直接查看class文件 jadnt158下载
- win8.1 安装webaccess遇到的写访问权限错误
- Codeforces 282E Sausage Maximization(字典树)
- JSP网站开发基础总结《九》(转)
- iOS imageio nsurlsession 渐进式图片下载
- Linux用户管理的复习时间
- EasyUI内容页Tabs。
- 关于tr069网管开发系列教程
- hdu 5274 Dylans loves tree(LCA + 线段树)
- js循环获取table中的值
- 本机Jenkins的使用
- 使用python连接mysql/oracle
- LODOP打印控件进行批量打印
- [翻译] 一个kubernetes网络简明教程[Part 1]
- [转]devm_gpiod_get_optional用法
热门文章
- Python操作rabbitmq系列(六):进行RPC调用
- 【python实现卷积神经网络】激活函数的实现(sigmoid、softmax、tanh、relu、leakyrelu、elu、selu、softplus)
- hadoop(五)scp命令copy文件和配置(完全分布式准备二)|7
- pgsql中json格式数组查询结果变成了字符串
- AJ学IOS 之微博项目实战(10)微博cell中图片的显示以及各种填充模式简介
- L4文本预处理
- 2019CCPC-江西省赛(重现赛)- 感谢南昌大学
- 13. 罗马数字转整数----LeetCode
- redis和memcache列出所有key
- PHP函数:get_class()