当前位置:
首页 > temp > 简明python教程 >
-
python爬取糗百段子
(1)目标网站为:https://www.qiushibaike.com/text/
(2)爬取目标网站10页内容
(3)爬取内容包括:作者和内容
(4)保存在字典中,格式如下:
{
1:{ '作者':'。。。',
'内容':'。。。。。。',
}
……
}
(5)将内容转换为JSON保存在文本中
1,首先对网页url进行分析确定前10页的url.
2,引用 requests bs4 json库。
3,写主函数 主函数下面有 请求url的函数 将 内容 作为参数交给 bs4 做处理(需要确定网页标签) 得到最终数据 做持久化保存。
import requests from bs4 import BeautifulSoup as BS import json headers={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36" } #ua伪装 text='https://www.qiushibaike.com/text' count_num=1 def get_html(url): html=requests.get(url,headers=headers) #请求url return html.text #返回整页的数据,请求多少页返回多少页的数据。 def bs_html(text_content,content_dict): global count_num soup=BS(text_content,'html.parser') #是要bs库里面的html.parser方法对text_content进行排序(text_content就是爬取的页面的html) soup_list=soup.select('#content .article ') #使用bs里的select这个方法找到页面里面标签。 for item in soup_list: #循环这个整体标签(这是整个页面,我们需要里面的某些数据) biaoti=item.select_one('.author a h2') #item作为临时变量,每循环一次都要在里面提取出整体标签下的 h2 标签,这个就是标题,赋值给前面biaoti这个变量 if biaoti: biaoti = biaoti.text.strip() else: biaoti='匿名用户' content=item.select_one('a .content span').text.strip() #整体标签下的内容也是上述方法,提取出来 content_dict[count_num]={'作者':biaoti,'内容':content} #使用这个空字典 前面加上计数器 后面是字典形式 每循环一次对应的计数+1 count_num += 1 return content_dict #返回整个字典 def save_text(text_list): #保存文件函数 with open('rut.txt','w',encoding='utf8')as f: #这个文件不存在 以写的方式打开就自动创建 起个别名f f.write(text_list) #对f进行保存 保存处理后的字典 f.close() #保存后关闭文件 def main(num): content_dict={} #定义空字典 for i in range(1,num+1): #循环次数 num是形参 url=text+'/page{}/'.format(i) #最终的url 对初始的url进行拼接 ,最终得到10页子url text_content=get_html(url) #对url请求,返回的数据赋值给 text_content这个变量,作为bs函数的参数。 text_list=bs_html(text_content,content_dict) #bs函数对整体的网页数据,空字典进行处理,当作两个参数放进去,上面bs函数处理好后返回整个字典,赋值给text_list这个变量 save_text(json.dumps(text_list,ensure_ascii=False)) #对数据保存前还要进行处理,参数是bs处理后的字典 去掉ascii这个编码格式,保存时使用utf8格式 if __name__ == '__main__': main(10)
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数