使用re模块获取糗事百科上的笑话
来源:互联网 发布:火烈鸟化妆品 知乎 编辑:程序博客网 时间:2024/06/06 15:20
获取的只有这个标签下面的内容,不包含图片格式,因为图片格式在编译器上面不显示
代码中为了消除空格还有换行的影响,直接把空格还有换行转化为啥都没有(空字符),注意网页的防爬虫,要记得伪装代码
#!/usr/bin/python#coding: utf-8from bs4 import BeautifulSoupimport re, sys, urllib, urllib2while True: url = "http://www.qiushibaike.com/hot/page/" try: x = int(raw_input("请输入一个数字(输入0结束), 荤段子只有35页:")) except Exception as e: print e print "请输入数字" continue if x == 0: break url = url + str(x) + "/" headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'} try: html = urllib2.Request(url, headers = headers) html = urllib2.urlopen(html).read() except Exception as e: print e print "出错了,无法链接糗事百科!" html = html.decode("utf-8") # 清除换行 html = "".join(html.split('\n')) reg = re.compile('<div *class="content"><span>(.*?)</span>') items = reg.findall(html, re.S) print("第%d页" % x) for x, item in zip(range(1, len(items)), items): # 消除<br>相关的表签 item = "".join(item.split('<br/>')) item = "".join(item.split('<br>')) sys.stdout.write("第%d条" % x) sys.stdout.write("\n") sys.stdout.write(item) sys.stdout.write("\n") sys.stdout.write("\n")
运行结果如下所示:
请输入一个数字(输入0结束), 荤段子只有35页:1
第1页
第1条
说个高中的 那会天天上晚自习 有几天时间 老是在中途断电,就可以回寝室了 简直就是我们最开心的时候 直到星期五开大会的时候 一位隔壁班的同学在讲台上声泪俱下的朗读了一份刻苦铭心的检讨书 我才知道一直是他在无私的默默的奉献着 拉电闸!!!!!!!!!!
第2条
气温骤降,得了重感冒,发烧39°度,吃药后爬上床盖上被子昏睡过去。迷迷糊糊中感到老婆进来,怜惜摸摸我的额头。怕吵醒我轻手轻脚钻进被窝,我心想:还是老婆体贴我。突然老婆紧紧抱着我:“艾玛,外面冷死了,还是你暖和”。。这个臭婆娘,敢情把我当成热水袋了…
(内容太多,中间的省略了)
第19条
楼下面包店门口,遇到楼上阿姨溜狗。她问我:丫头干嘛去?我:买点面包,我喜欢吃这里的果酱面包。阿姨:哦,你也喜欢果酱的?我甜甜一笑:是啊阿姨,你也喜欢?阿姨摇头:不,我家的狗喜欢果酱面包!……空气凝固了,玛德我不想说话了!
请输入一个数字(输入0结束), 荤段子只有35页:0
Process finished with exit code 0
版本2:
使用类封装代码,同时代码用来爬取笑话内容,作者,好笑的数量以及评论数
#!/usr/bin/python#coding: utf-8import urllib2, urllib, sys, reclass Spider(object): def __init__(self, url, x): self.url = url + str(x) + "/" def find(self): headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'} url = urllib2.Request(self.url, headers = headers) html = urllib2.urlopen(url).read() # 匹配作者,内容,好笑数以及评论数量 st = r'<div class="article block untagged mb15" id=.*?>.*?<h2>(.*?)</h2>.*?<span>(.*?)</span>.*?<span class="stats-vote">(.*?)</span>.*?<a href=.*?>(.*?)</a>' regix = re.findall(st, html, re.S) for reg in regix: for x, r in zip(range(0, len(reg)), reg): if x == 0: print u"作者:", r.strip() elif x == 1: # 把中间可能出现的</br>标签都剔除出去 r = r.replace("<br/>", "\n") print r.strip() elif x == 2 or x == 3: # print r # <i class=.*?>(.*?)</i>(.*?) rex = re.findall("<i class=.*?>(.*?)</i>(.*)", r, re.S) # 输出rex可以知道是一个数组 # print rex print rex[0][-1].strip(), rex[0][-2].strip() sys.stdout.write("\n") sys.stdout.write("\n")if __name__ == "__main__": while True: try: url = "http://www.qiushibaike.com/text/page/" x = int(raw_input(u"请输入要查找的页码:")) s = Spider(url, x) s.find() except Exception as e: print(u"出错了,请重新输入") continue
0 0
- 使用re模块获取糗事百科上的笑话
- 使用BeautifulSoup模块获取糗事百科上的笑话
- 糗事百科案例(使用 xpath模块)
- 使用python写糗事百科的爬虫
- 第一个爬虫:爬糗事百科笑话
- Python1--糗事百科笑话爬取
- 爬取糗事百科上的段子(BeautifulSoup)
- 爬取糗事百科的笑话,每按一下Enter键,输出一条信息
- 使用scrapy抓取糗事百科
- 使用scrapy抓取糗事百科
- 糗事百科的网络爬虫
- 糗事百科
- 糗事百科
- 糗事百科
- 糗事百科
- 糗事百科
- python写网络爬虫:爬取糗事百科上的段子
- 下载糗事百科的内容_python版
- 用 Wireshark 图解:TCP 三次握手
- javascript中的获取URL中指定的查询字符串
- css第一感
- 贪吃蛇大战隐私政策
- 各种测试方式总结
- 使用re模块获取糗事百科上的笑话
- linux使用vim编辑时候无法使用:wq保存报错
- HDU 5983-Pocket Cube(一步还原二阶魔方)
- LeetCode 36. Valid Sudoku
- VC++ 常用设计模式及应用场景
- Java线程之Callable和Future
- Codeforces #380(Div.2)B.Spotlights【思维+前缀和优化】
- 用户阅读完条款内容才能激活按钮的倒计时功能
- 构建Java并发模型框架