'''经历千辛万苦终于写成了自己的第一个爬虫,哇咔咔!
抓取糗事段子里面的段子,循环抓取多页
'''
import urllib.request
import ssl
import re
import pickleweburl = "https://www.douban.com/"
#设置请求头
headers = {'Accept': 'text/html, application/xhtml+xml, */*',# 'Accept-Encoding': 'gzip, deflate','Accept-Language': 'zh-CN','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6756.400 QQBrowser/10.3.2545.400','DNT': '1','Connection': 'Keep-Alive','Host': 'www.qiushibaike.com'}
def jokeCrawker(url):  #创建为经过验证的上下文context = ssl._create_unverified_context()req = urllib.request.Request(url=url, headers=headers)response = urllib.request.urlopen(req, context=context)#data = str(response.read())data = response.read().decode("utf-8")
   #. 不能匹配'\n',compole(pat, re.S),此处耽误了好久,无语了pat = '<div class="author clearfix">(.*?)<span class="stats-vote"><i class="number">'re_joke = re.compile(pat, re.S)jokeList = re_joke.findall(data)jokeDict = {}for div in jokeList:#name,名称pat = r'<h2>(.*?)</h2>'re_n = re.compile(pat, re.S)name = re_n.findall(div)[0]#words,说的段子pat = '<div class="content">\n<span>(.*?)</span>'re_w = re.compile(pat, re.S)words = re_w.findall(div)[0]#处理多个换行,<br/>,非(数字,字母,下划线,中文,以及中文标点符号)pat = '\\n{2,}|<br/>|[^\d\u4e00-\u9fa5(\u3002|\uff1f|\uff01|\uff0c|\u3001|' \'\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|' \'\u300b|\u3008|\u3009|\u3010|\u3011|\u300e|\u300f|\u300c|\u300d|' \'\ufe43|\ufe44|\u3014|\u3015|\u2026|\u2014|\uff5e|\ufe4f|\uffe5)*]'word = re.sub(pat, '', words)jokeDict[name] = wordwith open("F:/糗事段子/file/qiushi.txt", "a+") as fp:#还能同一存储到一个dict判断重复,然后在同一写入,就可以用'w',不过太占内存了#以后还能索引,看是否覆盖(短时间内不会)for k, v in jokeDict.items():info = str(k + "说:" + v + "\n")fp.write(info)return True
for i in range(10):webur2 = "https://www.qiushibaike.com/text/page/" + str(i) + "/"jokeCrawker(webur2)

转载于:https://www.cnblogs.com/854594834-YT/p/10539711.html

爬虫苦训第一天,我的第一个爬虫!!!相关推荐

  1. 爬虫第一弹:安居客房地产数据爬虫

    爬虫第一弹:安居客房地产数据爬虫  一.功能分析: 1.我们要爬取的安居客南昌新房的420个楼盘的信息,每个楼盘涵盖'楼盘名称' '楼盘特点' '参考单价' '物业类型' '开发商' '区域位置' ' ...

  2. 第一篇CSDN博客 python爬虫豆瓣排名前250的电影

    ## 第一篇CSDN博客 python爬虫豆瓣排名前250的电影 1.首先,这是本宝宝的第一篇博客,嘿嘿,有点小激动,之所以采用CSDN发博客呢有两个原因,1是因为现在学的东西比较多,自己学着学着就忘 ...

  3. 高校分配男朋友?当专业第一遇到了专业第一......

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文来源:中国青年报整理自扬州大学 当专业第一遇上专业第一,会发生什 ...

  4. 1964年诞生的第一代电子计算机,世界第一台电子计算机诞生的年份是?

    满意答案 sxh112 2014.01.21 采纳率:57%    等级:12 已帮助:8464人 .第一台电子计算机 阿塔纳索夫-贝瑞计算机(Atanasoff-Berry Computer,简称A ...

  5. Date型时间获取每周第一天,每月第一天,每季第一天,每年第一天

    Date型时间获取date所属的每周第一天,每月第一天,每季第一天,每年第一天 /*** 获取date所属月的第一天** @param date* @return* @throws ParseExce ...

  6. oracle sql取查询结果第一条,SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)...

    Sqlserver 获取每组中的第一条记录 在日常生活方面,我们经常需要记录一些操作,类似于日志的操作,最后的记录才是有效数据,而且可能它们属于不同的方面.功能下面,从数据库的术语来说,就是查找出每组 ...

  7. oracle关于时间的处理,如计算间隔天数、获取本年第一天、上月第一天、上月最后一天

    一. select sysdate from dual; SELECT APPLY_DATE ,round((select sysdate from dual)-APPLY_DATE,0) from ...

  8. 大学计算机思维导论第一讲测验答案,第一讲导论习题.doc

    第一讲导论习题 第一讲 导论习题 一.判断题. 1.人力资源管理将人看作成本中心.( X ) 2.人力资源与其他资源一样具有不可再生性.( X ) 3.人力资源管理是所有管理者的职责.( V ) 4. ...

  9. MySQL 常见时间获取整理(当日、当月、当年、上一日、上一月、上一年,当月第一天,当年第一天等等)

    MySQL 常见时间获取整理(当日.当月.当年.上一日.上一月.上一年,当月第一天,当年第一天等等) 当前时间 SELECT now(); //当前时间,格式2020-09-02 16:00:02 S ...

最新文章

  1. python基础代码事例-Python基础总结成千行代码,让Python入门更简单!
  2. Brocade说:网络就是云
  3. 堆(heap)和栈(stack)
  4. 用于集成测试的Maven Cargo插件
  5. 【C#】【Thread】BackgroundWorker的使用
  6. 如何将外置显示器与 Mac 搭配使用?
  7. 【恶搞Python】Python实现QQ连续发送信息的代码,咋就说可还刑
  8. 蓝桥杯python试题_Python爬取蓝桥杯真题讲解课程
  9. MySQL函数-递归函数
  10. android 互传文件,堪比隔空投送!iPhone和安卓、PC互传文件的3种方法,建议收藏...
  11. 投影仪与计算机连接方式,投影仪怎么连接电脑 电脑与投影仪的连接方法
  12. 当我们电脑上的Microsoft Office2003/2007/2010无法卸载时怎么处理?
  13. Windows环境下使用UHD PythonAPI开发USRP X310
  14. BPM实例分享——金额规则大写
  15. css3的坐标轴是相对于电脑屏幕还是物体自身?
  16. YT8614 QSGMII 模式网口丢包问题分析
  17. i 标签怎么关闭_中山不干胶标签生产厂家——飞盛条码标识技术
  18. WebSocket 结合 Nginx 实现域名及 WSS 协议访问
  19. 要么到岗,要么离职!马斯克:特斯拉「远程办公」到此结束
  20. openGauss5.0企业版使用指南之企业版安装

热门文章

  1. ScrollView’s handy trick
  2. ASCII码对照表 转帖
  3. 牛客网 PAT 算法历年真题 1003: 数素数 (20)
  4. python is 和 == 的区别、解码和编码 小数据池
  5. gitbook安装与使用之windows下搭建gitbook平台
  6. xgboost使用调参
  7. 3.1.1_Spring如何加载和解析@Configuration标签
  8. 前向渲染路径细节 Forward Rendering Path Details
  9. C++中返回对象的情形及RVO
  10. po 时不生效时, 不要用点方法