Python3爬虫学习笔记2.1——爬文字-糗事百科
来源:互联网 发布:jsp调用java显示图片 编辑:程序博客网 时间:2024/05/23 13:16
欢迎捧场,这次我们爬取糗事百科的幽默笑话大全,这里边只有文字内容,处理比较方便。
为了匹配我们需要的笑话内容,我们选择用正则表达式来处理。
.匹配任意字符,换行符除外,一个占位符
*匹配前一个字符0次或无限次,
?匹配前一个字符0次或者1次
.*贪心算法
.*?非贪心算法
() 括号内的数据作为结果返回indall: 匹配所有符合规律的内容,返回包含结果的列表
Search: 匹配并提取第一个符合规律的内容,返回一个正则表达式对象
Sub: 替换符合规律的内容,返回替换后的值
我们爬取的当前页的url为http://www.qiushibaike.com/text/ ,第二页的url为http://www.qiushibaike.com/text/page/2/ ,如果我们在地址栏中输入http://www.qiushibaike.com/text/page/1/,你会发现,页面会跳到你需要爬取页面的首页,这样就很方便我们处理了,我们可以用正则表达式匹配url的内容,然后替换掉。
re.sub('/page/\d','/page/%d'%i,old_url,re.S)
获取到每个带爬取页面的url之后,我们看一下需要处理的笑话内容。
可以发现,笑话的内容都放在 class=”content” 的块级元素中,则可以使用以下正则表达式。
re.findall('<div class="content">(.*?)</div>',source,re.S)
在处理完url和笑话内容的匹配后,我们可以把程序写出来如下:
#coding='utf-8'#爬糗百的段子import reimport requestsimport timeimport sysimport iosys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')class spider(): def getUrl(self,old_url,total_page): all_links=[] for i in range(1,total_page+1): new_url=re.sub('/page/\d','/page/%d'%i,old_url,re.S) all_links.append(new_url) return all_links def getSource(self,url): header={ 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36' } payload = { 's': '4907062', } html=requests.get(url,headers=header,params=payload) return html.text def getContent(self,source): content=re.findall('<div class="content">(.*?)</div>',source,re.S) return content def saveFile(self,info): f=open('info.txt','a') for each in info: f.writelines(each.decode('utf-8')) f.close()if __name__=='__main__': contents=[] url_qiubai='http://www.qiushibaike.com/text/page/1/' total_page=20 qiubaiSpider=spider() links=qiubaiSpider.getUrl(url_qiubai,total_page) for link in links: print('准备爬取'+link) a=qiubaiSpider.getSource(link) content=qiubaiSpider.getContent(a) #print('准备爬取'+link) for x in content: contents.append(x.encode('utf-8')) print(x) time.sleep( 1 ) qiubaiSpider.saveFile(contents)
最后有一个编码的问题,再保存文件的时候没有解决,抱歉。下次学习爬取网页图片,先给各位老司机安利一个网站:妹子图;一起努力进步吧。
0 0
- Python3爬虫学习笔记2.1——爬文字-糗事百科
- python3.5小爬虫—爬糗事百科
- [python3]糗事百科爬虫
- python3爬虫(二)实战- 爬糗事百科
- 【Python3.6】糗事百科爬虫
- python爬虫学习笔记(1)-爬取糗事百科
- python3爬虫(2)--爬取糗事百科页面
- [python3]爬虫实战一之爬取糗事百科段子
- 网络爬虫——爬取糗事百科笑料段子
- Python爬虫(一)——爬取糗事百科
- Python爬虫教程—python爬取糗事百科详解
- 爬虫——多线程糗事百科案例
- 爬虫——多线程糗事百科案例
- Python3爬虫糗事百科最新可用
- python3 爬取糗事百科
- python3糗事百科爬取
- 爬虫爬取糗事百科
- Python 爬虫 —— 糗事百科爬虫实战
- android背景设置报错 <item> tag requires a 'drawable' attribute or child tag defining a drawable
- AOJ 351 rmq或 基础线段树 求解
- 387.leetcode First Unique Character in a String(easy)[统计字符串字符次数]
- 杭电2091空心三角形
- python装饰器的学习
- Python3爬虫学习笔记2.1——爬文字-糗事百科
- 【31-35】剑指offer
- bzoj1251(splay序列操作)
- Java的HashMap和HashTable
- Parsing XML Data
- HDU 4553 约会安排(线段树区间合并&优先级)
- 笔迹宽度估计的低质量文本图像二值化(Robust Document Image Binarization Technique for Degraded Document Images)
- Co-prime Array
- 遍历二叉树的各种操作