当前位置:首页 > 资讯 > 正文

简单的python爬虫

简单的python爬虫


对于自动化办公而言,网络数据的批量获取可以节约相当的时间,因此爬虫在自动化办公中占据了一个比较重要的位置。

因而本节针对一个爬虫项目进行介绍,力求最大程度还原实际的办公场景。

Requests是一款目前非常流行的http请求库,使用python编写,能非常方便的对网页Requests进行爬取,也是爬虫最常用的发起请求第三方库。

安装方法:

 

或者conda安装:

 
 

试一试对百度首页进行数据请求:

 
 
 

例:用爬虫下载孔乙己这篇文章,网址是https://apiv3.shanbay.com/codetime/articles/mnvdu

我们打开这个网址 可以看到是鲁迅的文章。

我们尝试着用爬虫保存文章的内容。

 
 
 

re.text用于文本内容的获取、下载;

re.content用于图片、视频、音频等内容的获取、下载;

re.encoding 爬取内容的编码形式,常见的编码方式有 ASCII、GBK、UTF-8 等。如果用和文件编码不同的方式去解码,我们就会得到一些乱码。

 
 
 
 

浏览器工作原理:

向浏览器中输入某个网址,浏览器会向服务器发出请求,然后服务器就会作出响应。其实,服务器返回给浏览器的这个结果就是HTML代码,浏览器会根据这个HTML代码将网页解析成平时我们看到的那样。

比如我们来看看百度的html页面:

 
 

我们会看到很多带有标签的信息。

HTML(Hyper Text Markup Language) 是一种超文本标记语言,是由一堆标记组成。
例如

 

上面即为一个最简单的html,我们所需要的信息就是夹在标签中。

那么我们如何解析html页面呢?

我们一般会使用BeautifulSoup这个第三方库

安装方法:

 

我们来解析豆瓣读书 Top250

它的网址是:https://book.douban.com/top250

 
 

headers表示我们请求的网页的头,对于没有headers的请求可能会被服务器判定为爬虫而拒绝提供服务;

通过 from bs4 import BeautifulSoup 语句导入BeautifulSoup;

然后使用 BeautifulSoup(res.text, lxmlr’) 语句将网页源代码的字符串形式解析成了 BeautifulSoup 对象;

解析成BeautifulSoup 对象可以较为方便的提取我们需要的信息。

那么如何提取信息呢?

BeautifulSoup 为我们提供了一些方法:

find()方法find_all()方法

  • find() 返回符合条件的首个数据;
  • find_all() 返回符合条件的所有数据。
 
 
 

HTML定位方法:https://www.cnblogs.com/bosslv/p/8992410.html

 
 
 

自如公寓的价格在本节不讨论,在以后的课程中,会详细讲解相关的方法。

日前 , 国务院办公厅印发《关于加快培育和发展住房租赁市场的若干意见》,你是某新媒体公司的一名员工,老板希望对武汉的租房情况进行深度调研与分析,你想调查自如公寓的数据情况。根据工作的安排,你调研的是自如公寓武汉房屋出租分析的任务。

自如公寓官网:https://wh.ziroom.com/z/z/

通过观察官网你发现

第1页的网页为:https://wh.ziroom.com/z/p1/

第2页的网页为:https://wh.ziroom.com/z/p2/

第3页的网页为:https://wh.ziroom.com/z/p3/

第50页的网页为:https://wh.ziroom.com/z/p50/

你继续观察,发现

房屋的信息网页为类似于:https://wh.ziroom.com/x/741955798.html

即:https://wh.ziroom.com/x/XXXX.html

因此你有了思路,通过访问自如公寓的网站,获取每个房间后面的数字号,然后通过数字号访问房屋的直接信息,然后抓取房屋的信息保存在excel中。

于是你访问了房屋的网页:https://wh.ziroom.com/x/741955798.html

通过观察房屋的网页,你发现这些信息是你需要的:

房屋的名称,房屋的面积,房屋的朝向,房屋的户型,房屋的位置,房屋的楼层,是否有电梯,房屋的年代,门锁情况,绿化情况。

但是你遇到了困难,不知道这些信息的标签信息,不能用beautifulsoup对他们进行定位,

通过百度查询,浏览器按F12时能进入源代码模式 或者 点击右键进入审查元素从而进行相关的定位。

 

写到这里的时候,你想到,我多次访问自如的官网,如果只用一个UA头岂不是很容易被反爬虫识别,

你想到,我可以做很多个UA头,然后每次访问的时候可以随机选一个,想到这里,你直呼自己是个天才,

于是,你到网上找到了很多UA头信息。

 

现在正式开始爬取数据:

房屋的名称,房屋的价格,房屋的面积,房屋的朝向,房屋的户型,房屋的位置,房屋的楼层,是否有电梯,房屋的年代,门锁情况,绿化情况

你思考爬取的信息应该保存到csv文件中,于是你导入了csv包,并简单的了解了CSV包的用法:

第一步,是要获取房屋的数字标签

于是你打开了自如的官网,用浏览器的元素进行定位

发现房屋的信息标签都是这个

< a href=“dd//wh.ziroom.com/x/741955798.html” target=“_blank”> 房屋名称< /a >

聪明的你,随手写下了这个代码,便能爬取自如前50页。

 

通过研究发现你需要定位的信息通过标签头 h1 li span 和class的值对标签进行定位:

 

通过对上面标签的研究你完成了所有的代码。

 
 
 

完成了上面的实践项目1后,你膨胀到不行,觉得自己太厉害了。通过前面的学习,你了解到使用python进行电子邮件的收发,突然有一天你想到,如果我用A账户进行发送,同时用B账户进行接收,在手机上安装一个邮件接收的软件,这样就能完成信息从pc端投送到移动端。

在这样的思想上,就可以对动态变化的信息进行监控,一旦信息触发了发送条件,可以将信息通过邮件投送到手机上,从而让自己最快感知到。

具体路径是:

python爬虫–>通过邮件A发送–>服务器—>通过邮件B接收

因此我们本节的内容就是爬取36kr的信息然后通过邮件发送。

36kr官网:https://36kr.com/newsflashes

通过python发送邮件需要获得pop3的授权码

具体获取方式可参考:

https://blog.csdn.net/wateryouyo/article/details/51766345

接下来就爬取36Kr的网站

通过观察我们发现 消息 的标签为

 

需要注意的是,邮箱发送消息用的HTML的模式,而HTML模式下换行符号为 < br>

 

接下来就是QQ配置邮箱的发送信息

SMTP授权码获取方式:

https://www.jb51.net/article/228888.htm

 
 

课程来源: Datawhale自动化办公课程

本篇文章主要讲解了爬虫的相关内容,对Requests模块、 BeautifulSoup做了简单的介绍,并给出了实战项目有关自如公寓数据抓取以及36kr信息抓取与邮件发送,步骤详细,收获颇多。

最新文章