Python爬虫学习笔记(requests库)

安装:1.运行->CMD->pip install requests

          2.Pycharm中File->settings->Project Interpreter->+->requests->install package

测试运行案例:爬取百度首页源码:

import requests

request = requests.get("https://www.baidu.com") #从URL对应的网页中获取网页源码

rc = request.status_code  #查看获取网页状态,200代表访问成功

print(rc)

request.encoding = 'utf-8' #更改字符编码格式

rhtml = request.text #打印网页源码

print(rhtml)

1.get()方法:

常用 r=requests.get(url)构造向服务器请求资源的对象,如果现实403则需要计入header模拟浏览器

返回的是response对象;request.headers:获取网页的头部信息

requests的常用属性:

r.status——code:HTTP请求的返回状态,200代表成功,404代表失败:403禁止访问

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

r.text:获取URL对应的页面内容

r.apparent_encoding:从内容中分析出的响应内容的编码方式(标准)

r.content:HTTP响应内容的二进制形式

2.爬取网页通用代码框架:检测异常

def getHTMLText(url):

    try:

        r = requests.get(url,timeout=30)

        r.raise_for_status()

        r.encoding = r.apparent_encoding

        return r.text

    expect:

        return "产生异常"

 

#调用

if _name_=="_main_"

    url="https://www.***.**"

print(getHTMLText(url))

  1. Head()方法:获取头部信息,节省带宽

r = requests.head(‘URL’)    r.header #取得头部    r.text #结果是空

   Post()方法:提交信息,编码为form

Payload = {‘key1’:’value1’,’key2’:’value2’} #也可以直接在data提交数据

r = requests.post(‘url’,data = payload)

Print(r.text)

Put()方法:提交数据并覆盖原有数据

Payload = {‘key1’:’value1’,’key2’:’value2’} #也可以直接在data提交数据

r = requests.put(‘url’,data = payload)

Print(r.text)

  1. request()方法:requests(method,url,**kwargs)

7种Method:get,head,post,put,patch,delete,options对应7种HTTP 请求

**kwargs:控制访问的参数,均为可选项:

  1. params:字典或者字节序列作为参数增加到URL中

Kv = {‘key1’:’value1’,’key2’:’value2’}

R = requests.request(‘GET’,’https://www.baidu.com’,params=kv)

Print(r.url) #结果是:https://www.baidu.com?key1=value1&key2=value2

  1. data:字典或字节、文件对象作为request的内容

Kv= {‘key1’:’value1’,’key2’:’value2’}

R = requests.request(‘POST’,’https://www.baidu.com’,data=kv)

Body=’主题内容’

R = requests.request(‘POST’,’https://www.baidu.com’,data=body)

  1. json:json数据格式,作为request的内容

Kv= {‘key1’:’value1’}

R = requests.request(‘POST’,’https://www.baidu.com’,json=kv)

  1. headers:字典,HTTP定制头,模拟浏览器向服务器发起访问

Hd = {‘user-agent’:’Chrome/10’}

R=requests.request(‘POST’,’https://www.baidu.com’,headers=hd)

  1. cookies:字典或cookieJar,request中的cookie

Auth:元组,支持HTTP认证功能

  1. Files:字典类型,传输文件

Fs={‘file’:open(‘note.xls’,’rb’)}

R = requests.request(‘PoST’,’https://www.baidu.com’,files=fs)

  1. timeout:设定超时时间,秒为单位

R = requests.request(‘GET’,’https://www.baidu.com’,timeout = 10)

  1. Proxies:字典类型,设定访问代理服务器,增加登录认证,隐藏用户爬取网页的源  的IP地址信息,能够防止爬虫的逆追踪

Pxs={‘http’:’http://username:[email protected]:1234’

‘https’:’http://10.10.10.1.4321’}

R = requests.requests(‘GET’,’http://www.baidu.com’,proxies=pxs)

  1. allow_redirects:True/False,默认为true,重定向开关

Stream:True/FALSE,默认为True,获取内容立即下载开关

Verify:True/False,默认为True,认证SSL证书开关

Cert:本地SSL证书路径

  1. requests.get(URL,params=None,**kwargs):**kwarg包含request中除params的其他12个

  2. Requests.head(URL,**kwargs):**kwargs与requests完全一样

  3. requests.post(‘url’,data = None,json=None,**kwargs):**kwargs包含request中除了json和data的其他11个

  4. requests.put(‘url’,data = None,**kwargs):**kwargs:12个

  5. Requests.patch(url,data=None,**kwargs):**kwargs12个

  6. Requests.delete(url,**kwargs):**kwargs13个

实践案例:爬取京东商品页面信息 (iPhone 11 Pro max :https://item.jd.com/100008348536.html)

import requests

url = 'https://item.jd.com/100008348536.html'

try:
    r = requests.get(url)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text)
except:
    print("爬取失败")

发布了17 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_33360009/article/details/104005853
今日推荐