江湖小白之一起学Python (二)爬取数据的保存 朱雀 2020-10-18 06:17 1223阅读 0赞 接着上篇来说,我怕信息量太大,就放到这里讲数据的保存了,爬下来的数据怎么保存呢,来,我们马上开始…… 目前保存数据就常用的几种:txt文件,csv文件、Excel文件等等,还有就是插入数据库,做为前期小白的我们, 要求不要那么高,我们先保存为txt文件,下面就来操作下保存抓取到的目录标题及网址,我们将它保存为txt文件,这里先用到上篇抓取小说网的目录方法: #coding:utf-8 import requests from pyquery import PyQuery as pq #虽然pyquery封装了requests请求,但我还是单独提出来,以后经常会用到requests模块 url='http://www.530p.com/dushi/tashenshangyoutiaolong-175288/' response=requests.get(url=url) response.encoding = response.apparent_encoding content=response.text #用pyquery格式化一下网页内容,下面就可以通过标签提出信息了 soup = pq(content) clclist=soup(".clc").items() #循环标题和链接 for clc in clclist: # 我们要获取标签里的标题和对应的内容链接地址,先来提取下标题 title = clc.text() url=clc('a').attr('href') #拼接内容页完整地址 detailurl = '{}{}'.format('http://www.530p.com',url) print(title,detailurl) 上面就抓到了目录的标题和完整的网页地址,我们将要保存的内容拼接排下版: content=title+" "+detailurl+"\n" 简单又粗暴,在标题和网址之前加个空格以及加了个\\n,这个是啥意思,就是txt里换行,以便于打开txt文件不会出现一坨屎的情况,便于阅读(顺便扯一句,写代码注释这个是良好习惯,以后很重要),下面我们用3行代码实现保存。 f = open('part1.txt','a', encoding ='utf-8') f.write(content) f.close() 上面这个啥意思呢,其实就是用到open函数,函数是啥意思,OK,没关系,继续…… open第一个单引号里的part1.txt表示生成的文件名,你也可以加上路径比如D:/part1.txt这样就会保存到D盘下面,没加就会保存到跟你这个代码文件的同一目录下,感觉有点绕,不知道能不能看懂~~! open第二个单引号表示打开文件的模式,有很多中,r、rb、r+、w、w+、a、a+等等具体可以自己去看下open函数的用法,这里我们用到了a,表示文件的追加,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入,明白了没,在通俗点就是,我把标题和网址一行一行的保存到txt文件里。 open第三个参数encoding ='utf-8'这个是编码,基本都用这个,跳过…… f.write(contents) 这句呢就是表示把刚刚拼接的内容写入到txt文件里。 f.close() 这句呢就是表示写入完成后,关闭这个txt文件,不加这句,你这个文件就一直是打开状态,比较重要。 好了我们运行看下效果: ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p5bG9uZ2Vy_size_16_color_FFFFFF_t_70][] 你就说简单不简单,这里埋个伏笔,头脑灵活的小白,可以尝试将小说正文逐个保存为txt文件。 额,篇幅较短,叔叔不能忍,我们再说下保存csv文件,这是什么文件(表格文件),你就当它是excel文件,可以用excel打开,来,咱们开始上代码,首先你得载入一下csv这个库,这是python自带的,加在哪里?往下看,引入库都是用import方法,正常的写法是import csv,但图个方便,直接逗号再加上csv: import requests,csv 下面是主要代码: with open('part1.csv', 'a',encoding='utf-8') as f: cw = csv.writer(f) content=[] content.append(title) content.append(detailurl) cw.writerow(content) f.close() 似曾相似燕归来,跟上面的open函数用法差不多,不懂?嗯嗯,这个就是这么用的,略过…… 这3句是什么鬼,这叫数组,是不是有个点印象,看过第一篇的稍微说了下,没看过的赶紧去看,本教程环环相扣,逻辑缜密…… content=\[\] content.append(title) content.append(detailurl) 意思就是先定义一个空数组,通过append方法把标题和对应的网址塞到这个数组中,至于这个数组的用途就是为了写入到csv文件中,这里还是一行一行写入,一次性的请自行解决~~!来,看下效果: ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p5bG9uZ2Vy_size_16_color_FFFFFF_t_70 1][] 我列X,这是啥东西,小白不用慌,这是中文乱码而已,我们轻轻将encoding='utf-8'这句改成:encoding='utf-8-sig',细心的小白会注意到为什么数据之间会空一行,不要急,我们在加上newline='',完整如下: with open('part1.csv', 'a',newline='',encoding='utf-8-sig') as f: 删除掉之前生成的part1.csv(删除时切记不能打开),然后轻轻的在运行一下: ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p5bG9uZ2Vy_size_16_color_FFFFFF_t_70 2][] 完美,好了,上面的CSV文件是一行一行保存,你也可以获取到整个数据一起保存,使用writerows方法,有兴趣的可以自行操作下,简单的数据保存就到此结束,我们总喜欢不劳而获(白嫖),下面来段完整代码: txt代码: #coding:utf-8 import requests from pyquery import PyQuery as pq #虽然pyquery封装了requests请求,但我还是单独提出来,以后经常会用到requests模块 url='http://www.530p.com/dushi/tashenshangyoutiaolong-175288/' response=requests.get(url=url) response.encoding = response.apparent_encoding content=response.text #用pyquery格式化一下网页内容,下面就可以通过标签提出信息了 soup = pq(content) clclist=soup(".clc").items() #循环标题和链接 for clc in clclist: # 我们要获取标签里的标题和对应的内容链接地址,先来提取下标题 title = clc.text() url=clc('a').attr('href') #拼接内容页完整地址 detailurl = '{}{}'.format('http://www.530p.com',url) contents=title+" "+detailurl+"\n" f = open('part1.txt','a', encoding ='utf-8') f.write(contents) f.close() csv代码: #coding:utf-8 import requests,csv from pyquery import PyQuery as pq #虽然pyquery封装了requests请求,但我还是单独提出来,以后经常会用到requests模块 url='http://www.530p.com/dushi/tashenshangyoutiaolong-175288/' response=requests.get(url=url,timeout=10) response.encoding = response.apparent_encoding content=response.text #用pyquery格式化一下网页内容,下面就可以通过标签提出信息了 soup = pq(content) clclist=soup(".clc").items() #循环标题和链接 for clc in clclist: # 我们要获取标签里的标题和对应的内容链接地址,先来提取下标题 title = clc.text() url=clc('a').attr('href') #拼接内容页完整地址 detailurl = '{}{}'.format('http://www.530p.com',url) with open('part1.csv', 'a',newline='',encoding='utf-8-sig') as f: cw = csv.writer(f) content=[] content.append(title) content.append(detailurl) cw.writerow(content) f.close() 其实东西很少,python最大的优点就是很多库,比较完善,主要就是会用这些库,了解其中的参数,大部分都是这样,融会贯通,用得多了都是大同小异,区别就是要研究下这个库或者方法怎么使用的问题,好了,此篇到此结束,咱们下篇见! [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p5bG9uZ2Vy_size_16_color_FFFFFF_t_70]: /images/1603001853938.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p5bG9uZ2Vy_size_16_color_FFFFFF_t_70 1]: /images/1603001838026.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p5bG9uZ2Vy_size_16_color_FFFFFF_t_70 2]: /images/1603001821914.png
相关 小白学 Python 爬虫(25):爬取股票信息 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li 阳光穿透心脏的1/2处/ 2023年10月07日 11:14/ 0 赞/ 41 阅读
相关 江湖小白之一起学Python (十三)开发视频网之最终篇 本篇我们就来实现如何下载m3u8文件,如何合并成一个整的并且支持web播放的MP4文件,其实这里也有很多文章讲过这部分功能的实现,不过在合并ts文件成MP4的时候,大部分... 朱雀/ 2020年10月23日 16:15/ 0 赞/ 794 阅读
相关 江湖小白之一起学Python (十)开发视频网之搭建web框架 此机非彼机,电脑在手,天下我有,好了,又到了敲代码的时间了,今天就开始一步一步来实现利用python+flask开发一个视频网站,大家有时间可以去搜索下,一般python... 朱雀/ 2020年10月23日 16:02/ 0 赞/ 781 阅读
相关 江湖小白之一起学Python (八)进程池的运用 其实在python中多线程是假的多线程,为什么这么说呢,因为python的解释器在同一时刻只允许一个线程执行,不管你电脑有几个核,单位时间多个核只能跑一个线程,然后时间片... 朱雀/ 2020年10月23日 15:56/ 0 赞/ 792 阅读
相关 江湖小白之一起学Python (七)多线程的运用 爬虫中常用的多线程,多进程,协程等等,今天我们就来说下这个多线程的基本运用,这时候小白可能会问,啥是多线程啊,有啥用啊?客官勿慌,请听在下给你娓娓道来…… 朱雀/ 2020年10月23日 15:55/ 0 赞/ 813 阅读
相关 江湖小白之一起学Python (六)爬虫中session及cookie的运用 这几天自己有个小需求,忙着写爬取知乎的代码,所以耽误了下,不过也正好来讲一下爬虫中关于session及cookie的运用,因为这个在爬取需要登录或者cookie值的时候会... 朱雀/ 2020年10月18日 11:53/ 0 赞/ 806 阅读
相关 江湖小白之一起学Python (四)生成IP池 经过前面反反复复的练习,我觉得基本爬取一些网站是没有什么问题的,今天为什么讲IP池呢,因为很多网站是有反爬虫机制的,如果老是用你的固定Ip去频繁访问的话,会加入它的黑名单... 朱雀/ 2020年10月18日 06:35/ 0 赞/ 1016 阅读
相关 江湖小白之一起学Python (三)双色球历史数据抓取 故而知新,前面说了一下抓取信息的基本操作,今天抓取还是非常的简单,我们要抓取红球和蓝球的号码,我们顺道来回味下前面的操作,再了解下html标签,抓取双色球历史数据,首先我... 朱雀/ 2020年10月18日 06:29/ 0 赞/ 1204 阅读
相关 江湖小白之一起学Python (二)爬取数据的保存 接着上篇来说,我怕信息量太大,就放到这里讲数据的保存了,爬下来的数据怎么保存呢,来,我们马上开始…… 目前保存数据就常用的几种:txt文件,csv文件、Excel文件等... 朱雀/ 2020年10月18日 06:17/ 0 赞/ 1224 阅读
相关 江湖小白之一起学Python (一)初爬小说网 静下心来,我犹豫了很久,还是决定把我从零学python的大体过程记录下,希望能给广大没基础想学python,或者用来做点事的老铁们带来一些便捷的方法。 我相信想学pyt... 朱雀/ 2020年10月18日 06:15/ 0 赞/ 876 阅读