python最简洁!最简单!爬取糗百笑话内容!(有详细说明)优质
简要回答
python最简洁!最简单!爬取糗百笑话内容!
最近突然想起了半年前上python实验课的时候老师布置的实验内容,爬取糗百笑话,印象非常深刻,当时只学了关于爬虫最基本的内容,虽然自己很感兴趣,但仅仅简单了解了相关库的基本的使用方法,根本无从下手(当时看了两个多小时的代码,全程懵逼,还记得当时连替换requests请求的headers都要百度),所谓说,老师领进门,修行靠自己,现在就弥补以下当时的遗憾(时间过得有点久,哈哈哈哈哈),用自己认为最简单!最简洁!的代码爬取一下。
首先给出目标网页的第一页的url:
糗百官网
上代码:
1.所要用到的库:
import requests
from bs4 import BeautifulSoup
import re
老样子,requests库主要用来发起请求获得目标网页的源代码,BeautifulSoup库和re库组合使用,利用正则表达式***一行代码***抓取所要的内容。
2.给出整体程序的执行流程(是不是一看就明白呀):
if __name__ == '__main__':
page = 5 #page表示爬取笑话内容的html网页的页数,此为5页
url_list = [] #存放5页的url链接
#通过观察每一页的url链接的特点,通过for循环将每一页的url链接存入url_list列表中备用
for i in range(1,page+1):
i = str(i)
url = 'https://www.qiushibaike.com/hot/page/' + i + '/'
url_list.append(url)
list = getJokeText(url_list) #解析每一个网页源代码,获得未经处理的笑话内容,列表形式返回
text_list = subText(list) #处理内容,将
换行符剔除
saveText(text_list) #保存到本地指定.txt文本文档中
3.具体解析每一个方法的实现:
(1)获取网页的源码:
#获取网页的源码
def getHTMLText(url):
try:
hd = {'user-agent':'chorme/10'}
r = requests.get(url,headers = hd)
r.raise_for_status()
#r.encoding = r.apparent_encoding
return r.text
except:
return ''
这个代码可以作为一个爬取网页源码的通用框架来使用,需要注意的是此处未使用从爬取网页解析出的编码方式,及r.apparent_encoding返回的结果,因为requests请求返回的头部信息中就有编码方式gbk,不试用此会出现乱码的情况,兄弟们可以自己试一试哟。
(2)解析每一个网页源代码,获得未经处理的笑话内容,列表形式返回:
在写代码前先观察下目标内容的所在的标签位置(F12直接查看源码):
很容易就看出其中的特点,上代码!
#解析网页
def getJokeText(url_list):
a = [] #存放未经处理的爬取到的笑话内容
for i in url_list:
soup = BeautifulSoup(getHTMLText(i),'html.parser')
#通过soup.find_all方法,设置其中的属性直接找到存放内容的标签的父亲标签
for j in soup.find_all('div', attrs={'class': 'content'}):
text = re.findall(r'(.*?)', str(j), re.S) #正则表达式一行代码爬取内容
a.append(text) #添加进a列表中
return a
此时已经将内容爬取到,但其中包含很多换行符标签,在网页源代码截屏处也可以看到
注意re.findall()中设置标志r.S是表明包含换行符在内的所有内容,若不设置的话会返回空的呢,可以自己试一试其中的区别。
(3)处理内容,将换行符剔除:
def subText(list):
text_list = [] #存放处理好的内容
for list in list:
for text in list:
tds = re.sub(r'
', '', text, re.S) #用正则表达式将内容中的
找到替换为空字符串
text_list.append(tds)
return text_list
(4)保存到本地指定.txt文本文档中:
def saveText(text_list):
path = 'jok.txt'
with open(path, 'w', encoding='utf-8') as f:
for i in text_list:
# i.encode("utf-8")
f.write(i)
注意在打开文件时必须指定编码方式,否则会保存不进去的哟,你可以试一试二者的不同
(5)出结果!上图!
是不是很简单呀,总结以下自己在写代码时的新的体会,当抓取多个页面的具有相同格式的内容时,建议先从一页开始,当一页成功的时候,多页内容直接for循环就完全ojbk了
推荐阅读
-
苹果Telegram设置中文教程视频
在全球化的今天,跨语言的交流已经成为了日常生活的一部分,为了方便我们与来自不同国家的朋友进行交流,许多应用程序都提供了多语言支持,...
-
Telegram苹果版使用方法教程
简介Telegram是一款跨平台的即时通讯软件,它以其高度保密性、强大的功能和简洁的界面受到了全球用户的喜爱,在苹果设备上使用Te...
-
Telegram安卓中文版使用教程
简介Telegram是一款由俄罗斯创业家杜洛夫兄弟(PavelDurov和NikolaiDurov)开发的一款即时通讯软件,自...
-
最新教程苹果设备上的Telegram群屏蔽破解方法详解
随着科技的发展,社交软件已经成为了我们日常生活中不可或缺的一部分,Telegram作为一款全球范围内受欢迎的即时通讯软件,拥有着庞...
-
Telegram安卓使用方法教程
Telegram是一款跨平台的即时通讯应用,它提供了端到端的加密通信,保证了用户的隐私安全,虽然Telegram的界面简洁,操作起...
-
Telegram新手入门教程,轻松掌握聊天工具的基本操作
随着科技的发展,越来越多的人开始使用各种即时通讯软件来与朋友、家人和同事保持联系,在这些软件中,Telegram是一款非常受欢迎的...
-
详细步骤教你如何在安卓设备上登录Telegram
Telegram是一款全球知名的即时通讯软件,以其高度的安全性和隐私保护而受到用户的喜爱,对于一些新用户来说,如何在安卓设备上登录...
-
一步一步教你如何在安卓设备上登录Telegram
随着科技的不断发展,通讯工具也在不断升级换代,Telegram作为一款备受欢迎的即时通讯软件,以其高效、安全、稳定的特点受到了越来...
-
苹果手机Telegram使用教程
Telegram是一款非常受欢迎的即时通讯软件,它以其高度的安全性和隐私保护而闻名,在苹果手机上使用Telegram非常简单,只需...
-
Telegram在中国的使用方法详解
Telegram简介Telegram是一款跨平台的即时通讯软件,由俄罗斯创业家杜洛夫兄弟(PavelDurov和Nikolai...
0 条评论
最新文章
-
苹果Telegram设置中文教程视频2024-07-27 17:04:12
-
Telegram苹果版使用方法教程2024-07-27 16:59:16
-
Telegram安卓中文版使用教程2024-07-27 16:59:15
-
最新教程苹果设备上的Telegram群屏蔽破解方法详解2024-07-27 16:59:08
-
Telegram安卓使用方法教程2024-07-27 16:59:05