• python学习第六篇 文件操作 爬虫


    文件操作

       1、文件File定义

           文件是用于数据存储的单位文件通常用来长期存储数据

           文件中的数据是以字节为单位进行顺序存储的

       2、文件的操作流程

           1、打开文件

           2、读/写文件

           3、关闭文件

       注:

           任何的操作系统。一个应用程序同时打开文件的数量有最大数限制

       3、文本文件的操作

           1、文件的打开与关闭

           open(file, mode=’rt')用于打开一个文件,返回此文件流对象,如果打开文件失败,则会触发OSError错误

           2、文件的关闭方法

               f. close()#关闭文件,释放系统资源

       4、文件的读操作

           1、F. read(size=-1)

               说明:

               从文件流中最多读取size个字符(文本文件)或字节(二进制文件) ,如果不给出参数,则默认读取文件中全部的内容返回。

           2、F. readline()

               说明:

               读取一行数据,如果到达文件末尾则近回空行

           3、F. readlines (max_ chars = -1)

               说明:

               返回每行字符串的列表,max_ chars为最大字符(或字节数)

    练习:

       自己写一个文件‘info. txt’内部存一些文件信息

       如:

       张三 20 100

       李四 21 99

       小王 22 98

       写程序这些数据读出来,打印终端上

       4、文件的写操作

           1、F. write(text)

               说明:

               写一个字符串到文件流中,返回写入的字符数(文本文件)或字节数(二进制文件)

           2、F.writelines(lines)说明:

               将字符串的列表或字符串的列表中的内容写人文件

     1 # f = open('./info.txt','w',encoding='utf-8')
     2 # f.write("张三 20 100
    ")
     3 # f.write("张三 25 100
    ")
     4 # f.write("张三 22 100
    ")
     5 # f.close()
     6 try:
     7     i = 0
     8     f = open('./info.txt','w', encoding='utf-8')
     9     while i < 2:
    10         k = input("写入数据
    ")
    11         f.write(k)
    12         k="
    "
    13         f.write(k)
    14         i += 1
    15     print('写入完成')
    16     f.close()
    17     f = open('./info.txt',encoding='utf-8')
    18     s = f.readlines()
    19     # print(s)
    20     for line in s:
    21         k = line.strip()
    22         # print(k)
    23         b,n,m= k.split()
    24         # print(b,n,m)
    25         # n = int(n)
    26         # m = int(m)
    27         print('姓名:', b, '年龄:', n, '成绩:', m)
    28         # print(line)
    29     f.close()
    30 except OSError:
    31     print('打开文件失败')

    网络爬虫

       1.网络爬虫(网络蜘蛛、网络机器人)

           1、定义:抓取网络数据的程序

           2、用python程序模仿人点击浏览器访问网站

           3、目的:获取大量数据进行分析

       2.企业获取数据的方式

           1、公司自有的数据

           2、第三方数据平台购买

           3、爬虫爬取数据:市场上没有,或者价格太高

       3.python做爬虫的优势

           请求模块、解析模块丰富成熟,强大的Scrapy爬虫框架

           请求网站后返回的是网站的全部代码,而解析模块可以对网页进行分析获取到我们想要的数据

           php:对多线程、异步支持不太好

           JAVA:代买笨重,代码量大

           C/C++:虽然效率高,但是代码成型慢

       4.爬虫分类

           1.通用网络爬虫(搜索引擎引用,需要遵守robots协议)

           比如:百度、谷歌等网站

           robots协议:网站通过Robots协议告诉搜索引擎哪些页面可抓,哪些页面不可抓

           说明:

               每一个网站都是有robots协议, 有百度快照字样就是百度爬取的网站

           2.搜索引擎如何获取一个新网站的URL?

               1、网站主动向搜索引擎提供(百度站长平台)

               2、DNS服务器(万网),快速收录新网站

           3.聚焦网络爬虫

               自己写的爬虫程序:面向主题爬虫、面向需求的爬虫

       5.爬取数据步骤

           1.确定需要爬取的URL地址

           2.通过HTTP /HTTPS协议来获取相应的HTM页面

           3.解析响应

               1.所需数据,保存

               2.页面中新的URL,继续第2步

       6.WEB

           1.URL:

               scheme://host[:port]/path/... ... /[?query-string][#anchor]

               协议      域名  端口  资源路径    查询参数         锚点

               https://item.jd.com: 80/12451724.html

               https://www.baidu.com/s?ie=utf-8&f=8

               #多个查询参数之间要用&做分隔

               锚点:  跳转到网页指定位置

           2.请求头(Requst Headers):

               #接收数据类型:

               Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3

               #是否支持压缩/解压缩

               Accept-Encoding: gzip, deflate, br

               #支持的语言

               Accept-Language: zh-CN,zh;q=0.9

               #缓冲控制

               #max-age>0:直接从浏览器缓存中提取

               #max-age<=0:向服务器发请求确认,该资源是否修改

               Cache-Control: max-age=0

               #服务器可能检查

               Connection: keep-alive

               #支持长连接

               Cookie: BAIDUID=E1AFFE8C6467DCF0FC30CBA7BDD37F75:FG=1; BIDUPSID=E1AFFE8C6467DCF0FC30CBA7BDD37F75;... ....

               #升级HTTPS

               Host: www.baidu.com

               Upgrade-Insecure-Requests: 1

               #浏览器信息

               User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36

           3.GET和POST

               1、GET, 查询参数在URL上面显示出来

               2、POST:Form表单提交,传输大文件,数据隐藏在Form表单中,不会在IRL地址上显示

           4.爬虫请求模块(urllib. request)

               常用方法

               1.urllib.request.urlopen(‘URL地址’)

                1.作用:向网站发送请求并获取相应对象

                  2.重构 User-Agent

                       1.不支持重构:User-Agent :urlopen()

                       2.支持重构 User-Agent:urllib。request.Request()

               2.urllib.request.urlopen('URL',headers={})

               使用流程

                   1.创建请求对象

                   2.发请求获取响应

                   3.获取响应内容

               3.响应对象read()

                   1.read()

                   2.getcode():返回http响应码

                      200:成功

                      302:临时转义到新的URL

                      404:页面找不到

                      500:服务器异常

                   3.geturl()

                    1.返回实际数据的URL

           6.编码模块(urllib.parse)(编码解析网站:http://tool.chinaz.com/Tools/URLEncode.aspx?qq-pf-to=pcqq.temporaryc2c)

               1.urllib.parse.urlencode()

               写程序

                   请输入你要搜索的内容 ... ...

                   保存到本地文件:... ... html

           7.案例 百度贴吧数据爬取

               1.要求

                   1.输入抓取的贴吧名称

                   2.起始页

                   3.终止页

                   4.保存到本地;第1页.html 第2页.html ... ...

               2.步骤

                   1.找URL规律,拼接URL

                       第1页:http://

                   2.获取页面内容(发请求获取响应)

                   3.保存(本地、数据库)

    更新一个爬虫小程序。。爬取搜索结果的页面

     1 import urllib.request
     2 import urllib.parse
     3 
     4 baseurl='http://www.baidu.com/s?'
     5 key=input('请输入你要搜索的内容')
     6 #进行urlencode()编码转换
     7 wd={'wd':key}
     8 key=urllib.parse.urlencode(wd)
     9 url=baseurl+key
    10 # print(url)
    11 headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
    12 #创建请求对象
    13 req=urllib.request.Request(url,headers=headers)
    14 # print(req)
    15 #获取响应对象
    16 res=urllib.request.urlopen(req)
    17 
    18 html=res.read().decode('utf-8')
    19 #写入本地文件
    20 with open('搜索.html','w',encoding='utf-8') as f:
    21     f.write(html)
    22     print("爬取成功")
  • 相关阅读:
    此刻,很想那些老朋友
    985工程介绍
    211工程介绍
    蓝牙耳机声音断断续续
    不支持用淋浴洗澡
    在HY买饭
    成长路上的六个W
    屎、洗脚水
    Ubuntu更换软件源
    视频流媒体服务器RTMP和RTSP区别是什么?如何区分?
  • 原文地址:https://www.cnblogs.com/linxingh/p/11219886.html
Copyright © 2020-2023  润新知