第一个爬虫和设计

news/2024/7/19 10:24:47 标签: 爬虫, python

一、网络爬虫

  网络爬虫(又被称为网页蜘蛛,网络机器人,在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_codeHTTP请求的返回状态,200表示连接成功,404表示连接失败
r.encoding从HTTP header中猜测的响应内容编码方式
r.textHTTP响应内容的字符串形式,即,url对应的页面内容
r.contentHTTP响应内容的二进制形式
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()

 

转载于:https://www.cnblogs.com/wawaer/p/10941161.html


http://www.niftyadmin.cn/n/552963.html

相关文章

CAP

单一的垂直型架构已经无法很好的满足大流量的系统需求,继而产生了分布式的架构。分布式架构中会将各个服务独立部署为进程,并采用各种技术手段保障HA,但在分布式系统中,经常遇到单一架构中没有的事务问题。也就是分布式事务问题&a…

简单电商购物程序(续1)

#1)电商购物会员登录和会员注册;会员有属性:姓名、性别、登录账号、密码、累计积分值、会员资格;#会员资格分为:金钻、银钻、高级、普通等级别。#2)完善商品库:设置购买该商品可以获得的积分&am…

mysql 常用的一些不常用但很关键的sql

show variables like %max_connections% : 查看数据库当前实例的连接数; SET GLOBAL max_connections 5000 : 设置数据库实例的最大连接数(数据库重启后失效,mysql默认最大连接数是100); s…

2阶段事务提交

两阶段指的是准备阶段和提交阶段,基本逻辑就是协调者给参与者发送请求,各个参与者将操作的结果反馈给协调者,协调者统一安排是提交还是终止事务。 准备阶段: 1)协调者节点向所有参与者节点询问是否可以执行提交操作(…

mybatis官方中文文档

http://www.mybatis.org/mybatis-3/zh/index.html转载于:https://www.cnblogs.com/rainouyang/p/10948193.html

三阶段提交

由于二阶段提交存在很多的问题,我们对其做了一定的改进,也就是三阶段提交,过程图如下: 主要有2个优化点: 1 引入超时机制。同时在协调者和参与者中都引入超时机制。 2 在第一阶段和第二阶段中插入一个准备阶段。保证了…

C# 定时关机小程序

1.打开VS2019,创建界面和按钮 2. 代码如下: private void button1_Click(object sender, EventArgs e){downpc(txttime.Text);} private static void downpc(string time){Process.Start("shutdown", "/s /t "time); } private void…

补偿事务(TCC)

TCC(Try-Confirm-Cancel): Try 阶段:尝试执行,完成所有业务检查(一致性),预留必需业务资源(准隔离性)。 Confirm 阶段:确认真正执行业务&#x…