爬虫笔记一requests

一.requests的用法

requests库的7个主要方法:

get()方法:

import requests

r=requests.get('http://baidu.com')
print(r.status_code)

如果返回的状态码是200,说明访问成功

response对象的属性:

用get方法获取网上资源时的基本流程:

1.用r.status_code检查是否访问成功

2.如果返回值是200,则用r.text等其余四个属性解析返回的内容

3.如果返回值是404或者其他,说明访问异常

import requests

r=requests.get('http://www.baidu.com')

print(r.status_code) 

print(r.text)  #很多乱码

print(r.encoding)  

print(r.apparent_encoding)  #输出为utf-8
 
r.encoding='utf-8'  #替换后就可以解析出中文

print(r.text)

二.爬取网页的通用代码框架

requests库的异常

import requests

def getHTMLtext(url):
    try:
        r=requests.get(url)
        r.raise_for_status()  #如果响应值不是200,产生异常
    except:
        return ('产生异常')
    else:
        return(r.text)

url='http://www.baidu.com'
print(getHTMLtext(url))

当响应值是200时输出url页面的内容,当响应值不是200时输出产生异常

以上代码中定义的函数可替换为

def getHTMLtext(url):
    try:
        r=requests.get(url)
        r.raise_for_status()
        return r.text
    except:
        return '产生异常'

三.http协议

http: hypertex transfer protocol,超文本传输协议,基于请求与响应的(用户发起请求,服务器做响应)、无状态的(第一次请求与第二次请求没有关联)应用层协议

url,统一资源定位符,是通过http协议存取资源的internet路径

http协议对资源的操作:

获取资源:get、head

存储资源:post、put、patch

删除资源:delete

http协议和requests库:

获取头部信息:

r=requests.head(url)

print(r.headers)

四.requests库的方法解析

1.request方法:

五.网络爬虫

六.Robots协议

Robots Exclusion Standard 网络爬虫排除标准

位置:url/robots.txt    例:https://www.baidu.com/robots.txt

作用:网站告知爬虫哪些页面可以抓取,哪些不能抓取

形式:在网站根目录下的robots.txt文件

user-agent:*  (用户)

disallow:/        (不允许)

*代表所有    /代表根目录

例:

Disallow:/ ?*不允许访问任何?开头的

Disallow:/ pop/*.html不允许访问pop下任何.html

七.爬虫实例:

1.爬取某个页面

import requests

headers={
   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36'
}
url='https://www.bilibili.com/video/av9784617/?p=15'
try:
    r=requests.get(url,headers=headers)
    r.raise_for_status()
    r.encoding=r.apparent_encoding
    print(r.text)
except:
    print('爬取失败')

查看headers:

print(r.request.headers)

2.提交关键词搜索,以blibli为例

blibli搜索url如下,我们需要用params自己构造一个url

import requests

kv={
    'keyword':'python'
}
url='https://search.bilibili.com/all'
try:
    r = requests.get(url, params=kv) #把kv的参数添加到url后面
    r.raise_for_status()
    r.encoding=r.apparent_encoding
    print(len(r.text))
except:
    print('爬取失败')

3.网络图片的爬取和存储

import requests
import os

url='http://a.hiphotos.baidu.com/image/pic/item/960a304e251f95caf1852c0bc4177f3e6709521e.jpg'
root='D:/aaa/'
path=root+url.split('/')[-1]+'.jpg'

try:
    if not os.path.exists(root):#检验路径是否存在
        os.mkdir(root)
    if not os.path.exists(path):
        r=requests.get(url)
        with open(path,'wb') as f:
            f.write(r.content)
            f.close()
            print('文件保存成功')
    else:
        print('文件已存在')
except:
    print('文件爬取失败')

4.ip地址查询(通过ip138网站查询)

import requests

url='http://www.ip138.com/ips138.asp?ip='
try:
    r = requests.get(url + '202.12.35.63')
    r.encoding=r.apparent_encoding
    r.raise_for_status()
    print(r.text)
except:
    print('爬取失败')

猜你喜欢

转载自blog.csdn.net/qq_41518266/article/details/85119416
今日推荐