学习Python爬虫记录贴

    暑假想提升一下Python的扩展度(闲的没事),就在网上自学了爬虫,过程比较枯燥,但是程序写出来并且运行成功的那一刻是非常有成就感的,所以想写一篇关于简单的文字爬虫的教程(单线程到多线程),也算是一种总结吧!

  本文分两个部分:

1.爬虫开发需要的工具

2.开始编写程序(简易爬虫)

下面就让我们开始吧!

一、爬虫需要的工具安装

  工具选择

  ”工欲善其事,必先利其器“,Python爬虫开发有比较多的工具选择,这里我选择的是比较方便的 BeautifulSoup4 + requestshttp://www.python-requests.org/zh_CN/latest/ 这两个库是第三方库,其中requests有作者的中文详解(已附上链接)。

  工具安装

1、在Pycharm中安装:

 文件选项卡——设置——项目:PythonProject——Python解释器——单击右边软件包上方的 ”+“ ——搜索并安装上述两个第三方库。

 2、在命令提示符环境中按安装:

  输入: pip intall + ”你要安装库的名称“——回车。

 了解所需要的工具

  requests就像是一个抓手,把我们所需要的信息通过你给的URL从互联网上抓取过来,BeautufuSoup就像是筛子一样,过滤出我们所需要的内容。

二、开始编写

OK,有了工具,接下来就是开始编写程序了,首先是引用:

import requests as req
from bs4 import BeautifulSoup as bs

   as 就相当于给引用的函数另外起一个名,因为函数之前的名字太复杂了,我们嫌它长。

接着,我们来爬取一个小说网站(因为这个网站没有反爬虫,也没有线程限制所以适合练手):https://www.biqooge.com(笔趣阁)。

然后我们来编写代码对小说网站的首页进行爬取:

import requests as req

from bs4 import BeautifulSoup as bs

html='https://www.bqkan8.com'#写入网址

txt=req.get(url=html)#对该网址进行爬取

print(txt.text)

为什么输出的时候需要后面加一个text呢,是因为我们需要把爬取过来的内容转换成文本内容,这样我们才看得懂

接着,对首页网站爬取的内容进行分析我们发现,这样的一段东西:

那么,根据得到的图片信息,我们很快就能得到,这些信息指向的是小说的目录网址,但是,他给我们的不像是网址啊。

观察仔细的应该已经发现了“href=” 这个后面跟着的,就是这个小说在该服务器的存放地址,就像是存在我们自己电脑某某盘下面的文件一样,那么我们把这个复制到原先的URL后面去并运行程序:

这上面有许多我们不要的广告以及其他小说的推荐,那么我们怎样才能单独提取出自己所需要的小说目录呢?

分析得到的结构,我们发现,这个返回值是呈一个包含结构的,就像我们保存文件一样,我们所需要的不包括这些乱七八糟的,所以,在文章目录上面,有一个<div class="listmain">网页标签,我们需要的内容就在这个网页标签下面。

编写程序如下:

import requests as req

from bs4 import BeautifulSoup as bs

html='https://www.bqkan8.com/1_1496'#写入网址

txt=req.get(url=html)#对该网址进行爬取

txt=bs(txt.text,'html.parser') #这里的txt可以换成content

txt=txt.find_all('div',class_='listmain') #对目标进行筛选

print(txt)

第五行代码的意思是 创建一个BeautifulSoup对象,并且后面跟着的content我个人的理解是对这个对象进行编码属性的定义,这个content也可以换成text,而后面的’html.parser‘是用来解析这个对象。

第六行的意思是在txt里面寻找标签为’div‘,class属性为’listmain‘的内容

我们看一下运行结果:

那么,根据得到的地址,我们来爬取第一章的内容:

 

这时候我们不知道第一章内容的属性和标签,就不能使用BeautifulSopu,先是爬取整个页面,再来继续分析得到的内容:

直接看正文上方的标签,OK,得到了标签,再编写如下代码:

 

import requests as req

from bs4 import BeautifulSoup as bs

html='https://www.bqkan8.com/1_1496/450365.html'#写入网址

txt=req.get(url=html)#对该网址进行爬取

txt=bs(txt.text,'html.parser')

txt=txt.find_all('div',id='content')

print(txt)

运行得到:

 

作为一个简易爬虫,这确实是成功了,但是这样影响美观,所以我们要将其中的标签给他去掉,修饰修饰 

编写代码如下:

import requests as req

from bs4 import BeautifulSoup as bs

html='https://www.bqkan8.com/1_1496/450365.html'#写入网址

txt=req.get(url=html)#对该网址进行爬取

txt=bs(txt.text,'html.parser')

txt=txt.find_all('div',id='content')

txt=(str(txt).replace('<br/><br/>',''))

print(txt.replace('        ','\n\n'))

第八行代码 中那空格是html语言中的换行符,通过对代码的修改我们就得到了比较美观的的返回文字:

至此,我们完成了一个简单的爬虫编写。 

未完待续......

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值