博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
糗事百科正则爬虫
阅读量:5912 次
发布时间:2019-06-19

本文共 2885 字,大约阅读时间需要 9 分钟。

参考博客:http://cuiqingcai.com/990.html

# -*- coding:utf-8 -*- import urllibimport urllib2import repage = 1url = "https://www.qiushibaike.com/8hr/page/" + str(page)headers = {
"User-Agent":"Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)"}try: request = urllib2.Request(url, headers=headers) response = urllib2.urlopen(request) content = response.read() # 匹配有图的帖子 #pattern = re.compile('
.*?

(.*?)

.*?
(.*?).*?
(\d+)',re.S) # re.S 多行匹配 # 匹配无图的帖子 pattern = re.compile('
.*?

(.*?)

.*?
(.*?).*?.*?stats-vote.*?number">(\d+)',re.S) # re.S 多行匹配 items = re.findall(pattern,content) for item in items: print item[0], item[1].strip(), item[2]except urllib2.URLError, e: # 确定错误的属性 if hasattr(e, "code"): print e.code if hasattr(e, "reason"): print e.reason

与用户交互

# -*- coding:utf-8 -*-import urllib, urllib2import reimport threadimport time stories = []class Qsbk():    """定义一个丑事百科类"""    def __init__(self):        """初始方法"""        self.url = "https://www.qiushibaike.com/8hr/page/"                self.headers = {
"User-Agent":"Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)"} def get_page(self, page): """传入某一页索引的代码""" fullurl = self.url + str(page) try: request = urllib2.Request(url=fullurl, headers=self.headers) response = urllib2.urlopen(request).read() self.get_page_items(response) except urllib2.URLError, e: if hasattr(e, "code"): print e.code if hasattr(e, "reason"): print e.reason def get_page_items(self, response): """获取段子列表""" global stories pattern = re.compile('
.*?

(.*?)

.*?
(.*?).*?.*?stats-vote.*?number">(\d+)',re.S) # re.S 多行匹配 items = re.findall(pattern,response) for item in items: stories.append(item[0].strip()+"\n"+ item[2].strip()+"\n"+ item[1].strip().replace("
", "").replace("
", "")) def load_page(self, page): """如果当列表中少于10,则加载新一页""" self.get_page(page) def get_one_story(self): """调用此方法,打印一个段子""" global stories print "--------------------------------------------------------------------------------------" print stories.pop(0) print "--------------------------------------------------------------------------------------\n" def main(): """控制函数""" print "段子加载中..." qsbk = Qsbk() page = 0 qsbk.load_page(page) while True: option = raw_input("按任意键看段,按q退出:") if "q" == option: break else: if len(stories) < 10: page += 1 qsbk.load_page(page) qsbk.get_one_story()if __name__ == "__main__": main()

 

转载于:https://www.cnblogs.com/cuzz/p/7707596.html

你可能感兴趣的文章
浏览器中可以访问,但是git命令、go get命令使用时却无法连接
查看>>
Apache Spark源码走读之7 -- Standalone部署方式分析
查看>>
如何避免重构带来的危险
查看>>
有序的双链表
查看>>
MSSQLServer的备份与还原
查看>>
Eclipse导入的项目中发现包的形式变成了文件夹的形式,需要将文件夹的形式变成包...
查看>>
使用MySQL yum源安装MySQL
查看>>
iOS8中使用CoreLocation定位
查看>>
mvn package时设置了maven.test.skip=true依旧执行单元测试
查看>>
我的lamp常用安装配置
查看>>
Java NIO中的通道Channel(二)分散/聚集 Scatter/Gather
查看>>
Palindrome Partitioning
查看>>
一年多了,该回来了……
查看>>
四则运算
查看>>
Qt5 for Android: incompatible ABI
查看>>
zookeeper学习
查看>>
class类名的管理
查看>>
LeetCode:Rectangle Area
查看>>
文本查询
查看>>
查看帐号授权信息
查看>>