爬虫的由来简介:
在互联网诞生的年代,许多人建立了自己的网站,但是大家怎么知道别人的网站网址是什么呢?
开始的时候人们都是拿了个本子记下,但是这样的缺点很明显:<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)