爬虫苦训第一天,我的第一个爬虫!!!
'''经历千辛万苦终于写成了自己的第一个爬虫,哇咔咔! 抓取糗事段子里面的段子,循环抓取多页 ''' 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.我们要爬取的安居客南昌新房的420个楼盘的信息,每个楼盘涵盖'楼盘名称' '楼盘特点' '参考单价' '物业类型' '开发商' '区域位置' ' ...
- 第一篇CSDN博客 python爬虫豆瓣排名前250的电影
## 第一篇CSDN博客 python爬虫豆瓣排名前250的电影 1.首先,这是本宝宝的第一篇博客,嘿嘿,有点小激动,之所以采用CSDN发博客呢有两个原因,1是因为现在学的东西比较多,自己学着学着就忘 ...
- 高校分配男朋友?当专业第一遇到了专业第一......
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文来源:中国青年报整理自扬州大学 当专业第一遇上专业第一,会发生什 ...
- 1964年诞生的第一代电子计算机,世界第一台电子计算机诞生的年份是?
满意答案 sxh112 2014.01.21 采纳率:57% 等级:12 已帮助:8464人 .第一台电子计算机 阿塔纳索夫-贝瑞计算机(Atanasoff-Berry Computer,简称A ...
- Date型时间获取每周第一天,每月第一天,每季第一天,每年第一天
Date型时间获取date所属的每周第一天,每月第一天,每季第一天,每年第一天 /*** 获取date所属月的第一天** @param date* @return* @throws ParseExce ...
- oracle sql取查询结果第一条,SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)...
Sqlserver 获取每组中的第一条记录 在日常生活方面,我们经常需要记录一些操作,类似于日志的操作,最后的记录才是有效数据,而且可能它们属于不同的方面.功能下面,从数据库的术语来说,就是查找出每组 ...
- oracle关于时间的处理,如计算间隔天数、获取本年第一天、上月第一天、上月最后一天
一. select sysdate from dual; SELECT APPLY_DATE ,round((select sysdate from dual)-APPLY_DATE,0) from ...
- 大学计算机思维导论第一讲测验答案,第一讲导论习题.doc
第一讲导论习题 第一讲 导论习题 一.判断题. 1.人力资源管理将人看作成本中心.( X ) 2.人力资源与其他资源一样具有不可再生性.( X ) 3.人力资源管理是所有管理者的职责.( V ) 4. ...
- MySQL 常见时间获取整理(当日、当月、当年、上一日、上一月、上一年,当月第一天,当年第一天等等)
MySQL 常见时间获取整理(当日.当月.当年.上一日.上一月.上一年,当月第一天,当年第一天等等) 当前时间 SELECT now(); //当前时间,格式2020-09-02 16:00:02 S ...
最新文章
- python基础代码事例-Python基础总结成千行代码,让Python入门更简单!
- Brocade说:网络就是云
- 堆(heap)和栈(stack)
- 用于集成测试的Maven Cargo插件
- 【C#】【Thread】BackgroundWorker的使用
- 如何将外置显示器与 Mac 搭配使用?
- 【恶搞Python】Python实现QQ连续发送信息的代码,咋就说可还刑
- 蓝桥杯python试题_Python爬取蓝桥杯真题讲解课程
- MySQL函数-递归函数
- android 互传文件,堪比隔空投送!iPhone和安卓、PC互传文件的3种方法,建议收藏...
- 投影仪与计算机连接方式,投影仪怎么连接电脑 电脑与投影仪的连接方法
- 当我们电脑上的Microsoft Office2003/2007/2010无法卸载时怎么处理?
- Windows环境下使用UHD PythonAPI开发USRP X310
- BPM实例分享——金额规则大写
- css3的坐标轴是相对于电脑屏幕还是物体自身?
- YT8614 QSGMII 模式网口丢包问题分析
- i 标签怎么关闭_中山不干胶标签生产厂家——飞盛条码标识技术
- WebSocket 结合 Nginx 实现域名及 WSS 协议访问
- 要么到岗,要么离职!马斯克:特斯拉「远程办公」到此结束
- openGauss5.0企业版使用指南之企业版安装
热门文章
- ScrollView’s handy trick
- ASCII码对照表 转帖
- 牛客网 PAT 算法历年真题 1003: 数素数 (20)
- python is 和 == 的区别、解码和编码 小数据池
- gitbook安装与使用之windows下搭建gitbook平台
- xgboost使用调参
- 3.1.1_Spring如何加载和解析@Configuration标签
- 前向渲染路径细节 Forward Rendering Path Details
- C++中返回对象的情形及RVO
- po 时不生效时, 不要用点方法