爬虫的由来简介:

    在互联网诞生的年代,许多人建立了自己的网站,但是大家怎么知道别人的网站网址是什么呢?

    开始的时候人们都是拿了个本子记下,但是这样的缺点很明显:<1>每有新的就要自己记录<2>只能知道自己的。  

    于是,就有人想把这些收集起来,以后大家不必自己记录,我帮大家记录,大家有需要找我即可,这就是百度谷歌等搜索引擎公司干的事了。 

    但是,网站那么多,一个个记录效率低下,也不现实,于是,就有人分析网站,发现很多网站都有像“友情链接”这种超链接,于是他就写个程序自动把网站里的超链接提取出来收录,这样一个超链接里面还有别人的超链接,各个超链接连接起来像一张网一样,而收录程序,通过一个超链接到另外一个超链接,像虫子在网上爬一样,这就是爬虫程序的由来

 

所以,爬虫程序要做两件事,一下载网页,二分析网页的内容,提取超链接

 

在python中,下载网页用requests模块,而分析则用BeautifulSoup模块(安装的时候是 pip install BeautifulSoup4)

值得一提的是BeautifulSoup模块,一般网站下载下来后,都是通过正则匹配对应的字段,但是BeautifulSoup根据html的包含关系,分割成了各个对象并树状结构关联(比如<p><li>xxx</li></p> 分割成了p标签对象,p对象里面嵌套li对象),然后提供方法进行正则匹配

 

一个简单的查找“教育”关键字读后感链接的爬虫程序如下:

import requests,re
from bs4 import BeautifulSoup
for num in range(1,100):
# 这里的网站是根据page_后面加数字来分页的,据此构造url
    url="https://www.simayi.net/page_%s/" %num
    response=requests.get(url=url)
    # 根据返回的编码apparent_encoding 解码
    response.encoding=response.apparent_encoding
    
    # 默认分析引擎是html.parser,其他需要安装第三方软件
    soup = BeautifulSoup(response.text,'html.parser')
    
    # find()查找第一个匹配得到对象,find_all()查找全部得到对象列表
    # attrs表示查找属性值class='post multi'
    # 查找类似p标签只需要 find_all('p')
    art_list=soup.find_all(attrs={"class",'post multi'})
    art_dict={}
    for item  in  art_list:
        art_dict[item.find("a").text]=item.find("a").attrs

    for k,v in art_dict.items():
        if re.search("教育",k, flags=0):
            print(k,v)