Python3 爬虫实战(一)——爬取one每日一句,并保存到本地 - Go语言中文社区

Python3 爬虫实战(一)——爬取one每日一句,并保存到本地


前言
  ONE是韩寒的一个团队,主要内容是每日一句话、一幅图片、一篇文章、一个问题。我们此次爬虫的目标就是爬取ONE往期所有的每日一句,并保存下来。每日一句的页面如下图所示。

ONE每日一句

  大致可以按照以下的思路进行:
  1.由于是所有的往期,所以要先确定每期页面的url的规律
  2.查看页面源代码,确定要爬取内容的位置
  3.写爬虫程序,爬取内容并保存

1.确定URL规律
  下图是我们要爬取的页面中的三个关键部分:URL、期次、每日一句。

这里写图片描述

  观察URL我们可以看出,每一期的URL公共部分是http://wufazhuce.com/one/,然后后面加上不同的数字,但是期次和这个数字又不相同。经过简单尝试,得出这个数字的范围大概是14-1773(2017年7月18日为终点)。这样所有的URL就是:http://wufazhuce.com/one/+num(num范围是14-1773)

2.分析源代码,定位目标
  打开Chrome开发者模式(其他浏览器也有类似的查看源代码的功能),可以看到如下图所示的源代码:

这里写图片描述

  从图中我们可以看出,期次和每日一句所在的标签分别是****class属性为“one-titulo”和”one-cita”的div

3.写爬虫程序

  开发工具和开发环境:Windows+Python3;IDE使用的是Spyder,可以先下载Anaconda,下载之后就包含了Spyder,并且包含了几乎所有用的到的第三方库,就不用再次下载了。
  本程序主要用到的库是requestsBeautiful Soup两个。代码如下,有详细的注释。

import requests
import re
from bs4 import BeautifulSoup

url='http://wufazhuce.com/one/'#每一期的链接共同的部分
words=['0']*1800#定义一个长度为1800的列表,用来保存每一句话,并初始化为全‘0’
for i in range(14,1774):
    s=str(i)#数字类型转为字符串类型
    currenturl=url+s#当前期的链接
    try:
        res=requests.get(currenturl)
        res.raise_for_status()
    except requests.RequestException as e:#处理异常
        print(e)
    else:
        html=res.text#页面内容
        soup = BeautifulSoup(html,'html.parser')
        a=soup.select('.one-titulo')#查找期次所在的标签
        b=soup.select('.one-cita')#查找“每日一句”所在的标签
        index=re.sub("D","",a[0].string.split()[0])#从“vol.xxx”提取期次数值作为下标
        if(index==''):
            continue
        words[int(index)]=b[0].string.split()#将该期“每日一句”存入列表

f=open("one2.txt","a",encoding='utf-8')#将每句话写入这个txt文件中,先打开
for i in range(1,1774):
    if(words[i]=='0'):
        continue
    else:
        f.writelines('VOL.'+str(i)+'n')#写入期次和换行
        f.writelines('    ')#每句话开始空四格
        f.writelines(words[i])#写入该句话
        f.writelines('nn')#换行,并空一行写入下一句        
f.close()#关闭文件

4.执行结果:

这里写图片描述
  大功告成了!下次博文更新ONE的图片爬虫

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/NJU_Flepped/article/details/75452517
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 17:39:23
  • 阅读 ( 1733 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢