Python网络爬虫与信息提取(一) requests库

来源:互联网 发布:专家系统原理与编程 编辑:程序博客网 时间:2024/05/22 00:33

Request库入门

import requests #引入requests库 r = requests.get("http://www.baidu.com") #构造一个向服务器请求资源的Request对象,r是返回一个包含服务器资源的Response对象r.status_coder.text
属性 说明 r.statuscode 返回http请求状态码,200表示成功,404表示失败 r.text http响应内容的字符串形式,即url对应的页面内容 r.encoding 从http header中猜测的响应内容编码方式,获得的如果不是utf-8 可以赋值给.encoding以显示中文 r.apparent_encoding 从内容中分析出的内容编码方式,备选编码方式 r.content HTTP响应内容的二进制形式


爬取网页的通用框架

异常 说明 requests.ConnectionError
import requestsdef 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))

HTTP协议和requests库的主要方法

方法 说明 requests.request 所有方法的基础方法 requests.get requests.head r.headers展示 requests.post requests.put requests.patch requests.delete



http协议对资源的操作

方法 说明 get 请求获取URL位置的资源 head 获取url位置的头部资源 post 请求向url位置的资源后部附加新的数据 put 请求向url位置储存一个资源,覆盖原位置的资源 patch 请求局部更新URL位置的资源,即改变该处资源的部分内容 delete 请求删除url位置的资源


异常处理

修改表头:

kv = {"user-agent" : "Mozzila/5.0" }r = requests.get(url,header = kv) 

通过传递关键字爬取百度搜索的结果

import requestskeyword = input("input your searching keyword:")def getHtmlText(url):    try:        kv = {"wd" : keyword}        r = requests.get(url,timeout = 30,params = kv)        r.raise_for_status()  #如果状态码不是200,引发HTTPError异常        r.encoding = r.apparent_encoding        return r.text    except:        return("访问异常")if __name__ == "__main__":    url = "http://www.baidu.com/s" #记得加上/s    print (getHtmlText(url))

将结果保存到文件,利用r.iter_content()

with open(filename, 'wb') as fd:    for chunk in r.iter_content(chunk_size):        fd.write(chunk) #传递headers headers = {'user-agent': 'my-app/0.0.1'} r = requests.get(url, headers=headers)      
阅读全文
0 0