爬取电影吧一个帖子里的所有楼主发言:

# 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 = [(''', '\''), ('&quot;', '\"')] 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()

最新文章

  1. $x^2+y^2=c^2$
  2. 在iOS APP中使用H5显示百度地图时如何支持HTTPS?
  3. 扫盲贴000---关于python中的if __name__ == &#39;__main__&#39;
  4. C#多线程的异步委托/调用
  5. C++ 内联函数笔记
  6. MyEclipse下直接查看class文件 jadnt158下载
  7. win8.1 安装webaccess遇到的写访问权限错误
  8. Codeforces 282E Sausage Maximization(字典树)
  9. JSP网站开发基础总结《九》(转)
  10. iOS imageio nsurlsession 渐进式图片下载
  11. Linux用户管理的复习时间
  12. EasyUI内容页Tabs。
  13. 关于tr069网管开发系列教程
  14. hdu 5274 Dylans loves tree(LCA + 线段树)
  15. js循环获取table中的值
  16. 本机Jenkins的使用
  17. 使用python连接mysql/oracle
  18. LODOP打印控件进行批量打印
  19. [翻译] 一个kubernetes网络简明教程[Part 1]
  20. [转]devm_gpiod_get_optional用法

热门文章

  1. Python操作rabbitmq系列(六):进行RPC调用
  2. 【python实现卷积神经网络】激活函数的实现(sigmoid、softmax、tanh、relu、leakyrelu、elu、selu、softplus)
  3. hadoop(五)scp命令copy文件和配置(完全分布式准备二)|7
  4. pgsql中json格式数组查询结果变成了字符串
  5. AJ学IOS 之微博项目实战(10)微博cell中图片的显示以及各种填充模式简介
  6. L4文本预处理
  7. 2019CCPC-江西省赛(重现赛)- 感谢南昌大学
  8. 13. 罗马数字转整数----LeetCode
  9. redis和memcache列出所有key
  10. PHP函数:get_class()