第一个爬虫和设计
Posted wawaer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一个爬虫和设计相关的知识,希望对你有一定的参考价值。
一、网络爬虫
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
网络爬虫应用一般分为两个步骤:
1. 通过网络链接获取网页内容;
2. 对获得的网页内容进行处理;
这两个步骤分别使用不同的函数库:requests 和 beautifulsoup4 。
采用pip指令安装 requests 库:打开命令行窗口 → 输入cmd → 输入 pip install requests
( besutifulsoup4 库的安装也是类似的,此处不再赘述)
• Requests 库
1. Requests 库的7个方法
方法 |
说明 |
requests.request() |
构造一个请求,支撑以下各方法的基础方法 |
requests.get() |
获取html网页的主要方法,对应于HTTP的GET |
requests.head() |
获取HTML网页头信息的方法,对应于HTTP的HEAD |
requests.post() |
向HTML网页提交POST请求的方法,对应于HTTP的POST |
requests.put() |
向HTML网页提交PUT请求的方法,对应于HTTP的PUT |
requests.patch() |
向HTML网页提交局部修改请求,对应于HTTP的PATCH |
requests.delete() |
向HTML页面提交删除请求,对应于HTTP的DELETE |
2. Response对象的属性
属性 |
说明 |
r.status_code |
HTTP请求的返回状态,200表示连接成功,404表示失败 |
r.text |
HTTP响应内容的字符串形式,即,url对应的页面内容 |
r.encoding |
从HTTP header中猜测的响应内容编码方式 |
r. apparent_encoding |
从内容中分析出的响应内容编码方式(备选编码方式) |
r.content |
HTTP响应内容的二进制形式 |
3. 理解 Requests 库的异常
属性 |
说明 |
r.status_code |
HTTP请求的返回状态,200表示连接成功,404表示失败 |
r.text |
HTTP响应内容的字符串形式,即,url对应的页面内容 |
r.encoding |
从HTTP header中猜测的响应内容编码方式 |
r. apparent_encoding |
从内容中分析出的响应内容编码方式(备选编码方式) |
r.content |
HTTP响应内容的二进制形式 |
r.raise_for_status() |
如果不是200,产生异常 requests.HTTPError |
二、用 requests 库访问搜狗主页
函数说明:
函数名称 | 函数功能 |
requests.get() | 获取HTML网页的主要方法,对应于HTTP的GET |
r.status_code | HTTP请求的返回状态,200表示连接成功,404表示连接失败 |
r.encoding | 从HTTP header中猜测的响应内容编码方式 |
r.text | HTTP响应内容的字符串形式,即,url对应的页面内容 |
r.content | HTTP响应内容的二进制形式 |
len() | 计算文本长度 |
1 import requests 2 for i in range(20): 3 r = requests.get("https://www.sogou.com")#搜狗主页 4 print("网页返回状态:{}".format(r.status_code)) 5 print("text内容为:{}".format(r.text)) 6 print("\n") 7 print("text内容长度为:{}".format(len(r.text))) 8 print("content内容长度为:{}".format(len(r.content)))
二:爬取大学排名
1 import requests 2 from bs4 import BeautifulSoup 3 allUniv = [] 4 def getHTMLText(url): 5 try: 6 r = requests.get(url, timeout=30) 7 r.raise_for_status() 8 r.encoding = ‘utf-8‘ 9 return r.text 10 except: 11 return "" 12 def fillUnivList(soup): 13 data = soup.find_all(‘tr‘) 14 for tr in data: 15 ltd = tr.find_all(‘td‘) 16 if len(ltd)==0: 17 continue 18 singleUniv = [] 19 for td in ltd: 20 singleUniv.append(td.string) 21 allUniv.append(singleUniv) 22 def printUnivList(num): 23 print("{:^4}{:^10}{:^5}{:^8}{:^10}".format("排名","学校名称","省市","总分","培养规模")) 24 for i in range(num): 25 u=allUniv[i] 26 print("{:^4}{:^10}{:^5}{:^8}{:^10}".format(u[0],u[1],u[2],u[3],u[6])) 27 def main(): 28 url = ‘http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html‘ 29 html = getHTMLText(url) 30 soup = BeautifulSoup(html, "html.parser") 31 fillUnivList(soup) 32 printUnivList(10) 33 main()
以上是关于第一个爬虫和设计的主要内容,如果未能解决你的问题,请参考以下文章