Python网络爬虫与信息提取-Day1-requests库(1)

Request库的安装方法

首先用管理员权限启用command控制台

然后安装request

pip install requests

 

测试一下request库的安装效果

import requests
r = requests.get(“http://www.baidu.com”)
r.status_code

>>>状态码是200,表示访问成功

 

更改网页编码为utf-8编码,打印网页内容

r.encoding = ‘utf-8’
r.text


requests库有7个主要方法

requests.get方法

获得一个网页的最简单的一行代码就是

r = requests.get(url)

这里面我们通过get方法和url来构造一个向服务器请求资源的Request对象

requests.get函数返回的内容是一个Response对象,用变量r来表示

Response对象包含了从服务器返回的所有相关资源


requests.get函数的完整使用方法有三个参数

requests.get(url, params=None, **kwargs)

·url : 拟获取页面的url链接

·params : url中的额外参数,字典或字节流格式,可选

·**kwargs: 12个控制访问的参数

 

r = requests.get(url)这行代码中,最重要的是RequestResponse这两个对象,而获得网络内容的Response对象又是重中之重,它包含爬虫返回的内容

 

Response对象中,最常用的是如下五个属性,它们是访问网页最常用也是最必要的属性

(1)r.status_code

HTTP请求的返回状态,200表示连接成功,404表示失败

(2)r.text

HTTP响应内容的字符串形式,即,url对应的页面内容

(3)r.encoding

HTTP header中猜测的响应内容编码方式

(4)r.apparent_encoding

从内容中分析出的响应内容编码方式(备选编码方式)

(5)r.content

HTTP响应内容的二进制形式

比如:我们从一个url链接上获得一个图片,这个图片里的资源是以二进制形式存储的,那我就可以用r.content来还原这个图片

 

在使用get方法获得网络资源的时候,有如下的基本流程

先用r.status_code来检查状态,如果是200,则可以用r.textr.encodingr.apparent_encodingr.content去解析访问的内容;如果返回的状态码是404或者是其他,则说明这次访问因某些原因出错,将产生异常

 

理解Response编码

r.encoding是从HTTP header中猜测的响应内容编码方式

r.apparent_encoding是从内容中分析出的响应内容编码方式(备选编码方式)

r.encoding:如果header中不存在charset,则认为编码为ISO88591

r.text根据r.encoding显示网页内容

r.apparent_encoding:根据网页内容分析出的编码方式可以看作是r.encoding的备选

 

爬取网页的通用代码框架

一组可以准确地可靠地爬取网页内容的代码

r = requests.get(url)并不是一定成立的

因为网络连接有风险,所以这样的语句它的异常处理十分重要

Requests库支持6种常用的连结异常

(1)requests.ConnectionError 网络连接错误异常,如DNS查询失败、拒绝连接等

(2)requests.HTTPError HTTP错误异常

(3)requests.URLRequired URL缺失异常

(4)equests.TooManyRedirects 超过最大重定向次数,产生重定向异常

(5)requests.ConnectTimeout 连接远程服务器超时异常

(6)requests.Timeout 请求URL超时,产生超时

 

Response异常,Response提供了一个方法

r.raise_for_status() 如果不是200,产生异常 requests.HTTPError

r.raise_for_status()在方法内部判断r.status_code是否等于200,不需要增加额外的if语句,该语句便于利用tryexcept进行异常处理

 

爬取网页的通用代码框架

import requests

def getHTMLText(url):
	try:
		r = requests.get(url, timeout=30)
		r.raise_for_status()  #如果状态不是200,则引发HTTPError异常
		r.encoding = r.apparent_encoding
		return r.text
	except:
		return "产生异常"

if __name__ == "__main__":
	url = "http://www.baidu.com"
	print(getHTMLText(url))

通用代码框架使得爬取网页更有效、更稳定、更可靠



  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python爬虫可以很方便地爬取天气数据。以下是一个简单的示例,可以获取北京市最近7天的天气数据: ```python import requests from bs4 import BeautifulSoup url = 'http://www.weather.com.cn/weather/101010100.shtml' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.content, 'html.parser') weather_list = soup.select('.t .clearfix') for weather in weather_list: date = weather.select('.day')[0].text.strip() condition = weather.select('.wea')[0].text.strip() high_temp = weather.select('.tem .high')[0].text.strip() low_temp = weather.select('.tem .low')[0].text.strip() print(date, condition, high_temp, low_temp) ``` 解释一下代码: 1. 首先,我们需要找到天气数据的来源网站。这里我选择了中国天气网(http://www.weather.com.cn/)。 2. 我们使用 requests 来向该网站发送 HTTP 请求,并使用 BeautifulSoup 对返回的 HTML 页面进行解析。 3. 通过分析 HTML 页面,我们可以找到所需的天气数据在 class 为 “t clearfix” 的 div 元素下。我们使用 select 方法选择该元素,并遍历所有天气信息。 4. 对于每一个天气信息,我们可以从 HTML 中找到日期、天气状况、最高温度和最低温度等信息,并进行提取和打印。 以上代码只是一个简单的示例,实际爬取天气数据可能会涉及到更多的数据处理和异常处理。 ### 回答2: Python爬虫可以用来爬取天气数据,通过抓取天气网站上的信息,获取实时或历史天气数据,并进行进一步的分析和处理。 首先,我们需要了解要爬取的天气网站的结构和数据的位置。通常,天气网站会提供API接口或者发布天气数据的HTML页面。我们可以通过分析网页结构,确定需要爬取的数据在源代码中的位置。 接下来,我们可以使用Python中的第三方,例如requests和BeautifulSoup来实现爬虫功能。使用requests可以发送HTTP请求,获取网页源代码,而使用BeautifulSoup可以方便地解析HTML页面,提取需要的数据。 如果网站提供API接口,我们可以直接使用requests发送GET请求,获取到JSON格式的数据。然后,我们可以使用Python的json对数据进行解析,并提取出所需的天气信息。 如果网站提供天气数据的HTML页面,我们可以使用requests获取到页面的源代码,然后使用BeautifulSoup解析HTML,提取出对应的天气数据。我们可以通过标签名称、CSS选择器或XPath来定位需要的数据。 在获取到天气数据之后,我们可以进一步处理和分析这些数据。例如,我们可以提取温度、湿度、风力等关键信息,并进行数据可视化、统计分析或者机器学习预测。Python中的matplotlib、pandas和scikit-learn等可以帮助我们进行这些进一步的处理和分析。 总而言之,使用Python爬虫爬取天气数据可以帮助我们获取到所需的天气信息,并进行进一步的分析和应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值