day16-简单网页数据爬取

1、练习

"""
将100以内的素数输出到一个文件中"""
def is_prime(num:int)->bool:"""判断一个正整数是不是素数:param num: 正整数:return: 素数返回True,否则返回False"""# for i in range(2,num):for i in range(2,int(num**0.5)+1):if num % i == 0:return Falsereturn Truewith open('prime.txt','w') as file:for n in range(2, 100):if is_prime(n):# print(n, file=file) # 打印到指定文件中file.write(f'{n}\n')

2、对象的序列化和反序列化

"""
对象的序列化(serialization)和反序列化(deserialization)
序列化:把一个对象(字典,列表等)变成字符串(str)或者字节串(bytes二进制)
反序列化:从字节串或者字符串中还原出一个对象(字典,列表等)
python的标准库有一个名为json/pickle的模块,可以支持我们做序列化和反序列化的操作
JSON -->JavaScript Object Notation --> JavaScript语言创建对象的自变量语法
let person = {name:"陈来",age: 12,sex: True
}
person.name
person.age
这种数据格式也非常适合在两个系统(尤其是异构的系统)传输数据(因为它是纯文本),
所有今天当我们说到JSON,更多的适合是把它当成一种数据交换格式。python中的字典跟JSON格式非常像,所有我们可以通过将字典转成JSON格式的字符串,就可以写入文件中实现持久化
"""
import json
persons = {'name': '陈来','age': 18,'sex': False,'friends': ['小兰','小明','小李'],'car': {'brand': 'QQ','max_speed': 120}
}
# # with open('dict.txt', 'w', encoding='utf-8') as f:
# #     f.write(str(persons))
# with open('persons.txt','w') as file: # eval函数不用**
#     # json序列化(以下三种方法是一样的)(其他也可以读Java,python)
#     file.write(json.dumps(persons))
#     # print(json.dumps(persons),file=file)
#     # json.dump(persons,fp=file) #persons 内容转成字符串 写进filew文件中import pickle
with open('persons.dat', 'wb') as file: # eval函数不用# pickle二进制序列化(只有python可以读)# print(json.dumps(persons),file=file)pickle.dump(persons, file=file) #persons 内容转成字符串 写进filew文件中

3、将JSON格式数据还原成字典对象

"""
1.读取文件中的JSON格式数据还原成字典对象
import json 字符串变字典
1)json.loads(读出来的数据)->file.read()->json.loads(file.read())
2)json.load(fp=file) 从文件中读出来还原成字典字典变字符串
1)json.dump(序列,fp=file) 写进文档里
2)json.dumps(序列(字典)) ->file.write(json.dumps(序列(字典)))import pickle"""
import jsonwith open('persons.txt') as file:# content = file.read() # 先读出来# # 反序列化:将字符串还原成(字典)对象# 从文件中读取字符串还原成字典对象# obj = json.loads(content) # 再还原。加载字典、列表 obj对象# print(obj, type(obj))# # 反序列化:将字符串还原成(字典)对象obj = json.load(fp=file) # 从文件中读出来还原成字典print(obj)print(type(obj))"""
2.读取文件中的二进制格式数据还原成字典对象
"""
import pickle
with open('persons.dat', 'rb') as file:# 从文件中读取字节串还原成字典对象content = file.read()obj = pickle.loads(content)print(obj, type(obj))# 从文件中读取字节串(二进制)还原成字典对象file.seek(0)obj = pickle.load(file=file)print(obj, type(obj)) # shift + 大写字母 #聚合数据
#   juhe.cn

4、联网获取网页数据

"""
example06 - 联网获取数据URL ---> 网址 ---> 统一资源定位符 ---> 能够唯一标识一个(网络)资源的符号
https://www.baidu.com:443/index.html
https://14.215.177.38:443/index.html
https://www.baidu.com:443/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png协议://用户名:口令@域名或者IP地址:端口/路径1/路径2/资源名称URI ---> 统一资源标识符 ---> URL + URN使用三方库 requests 可以非常方便的实现通过URL访问网络资源的操作
可以使用Python的包管理工具 pip 来安装和管理三方库以及三方工具# 1.1先更改将Windows PowerShell改为venv虚拟环境: Windows PowerShell-->venv1、pip --version 检测版本以及是否可以用pip(Terminal中检测)2、修改 pip 下载源为国内的镜像网站(推荐使用豆瓣网的镜像)(全局设置)pip config set global.index-url https://pypi.doubanio.com/simple查找三方库:pip search requests安装三方库:pip install requests 黄色警告不用管卸载三方库:pip uninstall requests更新三方库:pip install -U requests协议 ---> 规范和标准 ---> 网络协议 ---> 通过网络进行通信的双方要遵守的规范和标准
HTTP ---> 超文本传输协议 ---> 请求响应式协议
import jsonimport requests#** get函数会通过你指定的URL向Web服务器发起一个请求,该函数会返回一个响应对象
# reformat code自动格式化代码  天气获取
resp = requests.get(url='http://apis.juhe.cn/simpleWeather/query',  # api文档查看必填值params={'city': '上海','key': 'e73ebce8dc3cb2f35510f4462f08430c'}
)
#获取网址,二进制的数据content(图片是二进制数据)
# print(resp.text)
# 获取服务器响应的内容并将其反序列化成一个字典对象
weather_dict = json.loads(resp.text) # 将字符串转换为字典
print(weather_dict['result']['realtime'])
# futures = weather_dict['result']['future']
# for future in futures:
#     print(future)

5、操作excel文件

"""
# pip install openpyxl 下载可以读写excel文件
# Python操作excel文件
"""
import openpyxl
# 创建一个excel工作簿
workbook = openpyxl.Workbook()# excel工作簿(一个excel文件),工作表,单元格
# workbook.create_sheet('hello') # 创建
# 获取默认的工作表
sheet = workbook.active
# 添加表头(添加数据)
sheet.append(('姓名', '语文', '数学', '英语'))
sheet.append(('陈来', '61', '79', '70'))
sheet.append(('小新', '62', '71', '73'))
sheet.append(('小明', '64', '72', '74'))
sheet.cell(5, 1, '张三丰') # 第几行的第几列写一个数据
# 保存工作簿(ctrl+v删除,ctrl+d复制)
workbook.save('学生考试成绩表.xlsx')

6、通过天行数据的API接口获取头条新闻数据

from datetime import datetimeimport openpyxl
import requestsworkbook = openpyxl.Workbook()
sheet = workbook.active
sheet.append(('标题', '链接', '来源'))
for page in range(1, 6):resp = requests.get(url='http://api.tianapi.com/topnews/index',params={'key': 'e8c5524dd2a365f20908ced735f8e480','page': page,'num': 20})
# news_dict = resp.json() #拿到新闻字典
# print(news_dict)
#     result = resp.json()  # 拿到新闻字典
#     for news_dict in result['newslist']:
#         print(news_dict['title'])
#         print(news_dict['url'])
#         print(news_dict['source'])
#         print('-'*50)result = resp.json()for news_dict in result['newslist']:title, url, source = news_dict['title'], news_dict['url'], news_dict['source']sheet.append((title, url, source))
curr = datetime.now()
workbook.save(f'头条新闻数据_{curr.year}{curr.month:0>2d}{curr.day:0>2d}.xlsx')
slist']:title, url, source = news_dict['title'], news_dict['url'], news_dict['source']sheet.append((title, url, source))
curr = datetime.now()
workbook.save(f'头条新闻数据_{curr.year}{curr.month:0>2d}{curr.day:0>2d}.xlsx')

day16-简单网页数据爬取相关推荐

  1. 使用Java IO流实现网页数据爬取(一)

    使用Java实现网页数据爬取(IO流) 第一阶段:爬取网页源码及所有链接地址 引入代码步骤: 1.将ClimbImg.java,Demo.java文件导入 ClimbImg.java 爬取网页雏形 : ...

  2. python循环爬取页面_使用for或while循环来处理处理不确定页数的网页数据爬取

    本文转载自以下网站: Python For 和 While 循环爬取不确定页数的网页  https://www.makcyun.top/web_scraping_withpython16.html 需 ...

  3. 【Python爬虫】5行代码破解验证码+网页数据爬取全步骤详细记录

    文章目录 前言 一.抓包分析 二.编写模块代码 1.引入库 2.获取验证码图片 3.识别验证码 4.爬取列表页 5.爬取详情页 6.完整代码 总结 1.TIPS 2.如需交流,可在代码头找到我,或者用 ...

  4. python获取网页数据对电脑性能_【Python】网页数据爬取实战

    由于网页结构跟之前有变化,还不是很熟悉.代码待完善,问题记录: 腾讯新闻二级网页内容爬取有问题. 链家网站头文件没有用到. 爬取一条腾讯视频的header内容,存入txt.要求: 包含网页链接 包含t ...

  5. Windows下利用python+selenium+firefox爬取动态网页数据(爬取东方财富网指数行情数据)

    由于之前用urlib和request发现只能获取静态网页数据,目前爬取动态网页有两种方法, (1)分析页面请求 (2)Selenium模拟浏览器行为(霸王硬上弓),本文讲的就是此方法 一.安装sele ...

  6. python爬取数据总结_2020-10-23Python——网页数据爬取知识总结

    一.爬虫请求方法 1.模块名:urllib.resquest 2.导入的方式: import urllib.resquest from urllib import request 3.使用的方法 re ...

  7. 使用Beautiful Soup和lxml轻松搞掂网页数据爬取

    其实这类文章很多了,但还是简要记录一下. 三个黄金搭档:Beautiful Soup.lxml和requests Python标准库: BeautifulSoup(markup, 'html.pars ...

  8. 基于python的数据爬取与分析_基于Python的网站数据爬取与分析的技术实现策略

    欧阳元东 摘要:Python为网页数据爬取和数据分析提供了很多工具包.基于Python的BeautifulSoup可以快速高效地爬取网站数据,Pandas工具能方便灵活地清洗分析数据,调用Python ...

  9. 以一举三的京东数据爬取(已经分配好各个方法,修改几行代码即可应用其他网站)并以json文件保存

    json的介绍 1.个人所理解的json就是一个与xml类似的数据存储文件, 而且也比xml容易写和读,跟python中字典很相似,本篇文章也是直接保存字典. 2.https://baike.baid ...

最新文章

  1. jsp页面中静态文件的时间戳
  2. python时间序列预测报错_python如何做时间序列
  3. imagepreview使用案例_微信小程序wx.previewImage预览图片实例详解
  4. P3723 [AH2017/HNOI2017]礼物(FFT)
  5. 文本分类--情感分析
  6. codeforce 606A - Magic Spheres
  7. day21 java的数字类
  8. TCPDUMP 用法(转)
  9. Watir vs Selenium
  10. Game Engine on Vulkan 01-preface [Vulkan游戏引擎开发 01-引言]
  11. C#编程,DateTime使用方法,时间转字符方法总结
  12. IPv6 address示例
  13. 生物信息学在生物医药领域的应用
  14. 个人面试问答题知识库(一)百面机器学习篇
  15. 阿里员工内部常用免费工具包
  16. node js fcoin api 出现 api key check fail : {status:1090,msg:Illegal API signature}
  17. 喜马拉雅数据接口 接入 demo PHP版 API
  18. mbbiDirect记录
  19. U盘数据加密--Bitlocker
  20. Failed to retrieve application JMX service URL

热门文章

  1. 华为网络----OSPF路由协议理论+实验(一)
  2. 互联网暗潮汹涌,开放平台机遇空前
  3. 一文读懂链上身份(DID):赛道及项目一览
  4. 【Atlas500】入门到放弃(六)——【DVPP】浅析HFBC格式数据存在的意义
  5. 程序员不得不写得(一):Eclipse, VS.net, CSharpDevelope
  6. 基于python的MODIS数据质量控制------以MOD11A1为例
  7. Leetcode-D35-数组-455. 分发饼干
  8. Colab 上使用shutil.copytree()复制整个文件夹到另一个文件夹
  9. kubernetes的部署架构以及工作原理
  10. 福禄克LinkIQ™智能链路通线缆网络测试仪功能介绍