(一)关于爬虫之请求

本文介绍了Python爬虫中常见的三种请求方式:requests库的简单使用,包括GET和POST请求;urllib模块的urlopen方法及其参数,以及请求参数的处理;最后介绍了Selenium框架,用于模拟浏览器行为,支持动态加载和执行JavaScript。
摘要由CSDN通过智能技术生成

(一)关于爬虫之请求

核心思想:

爬虫实际上是在想尽办法冒充客户端(如:浏览器)向服务器发起请求,拿到服务器响应的数据(资源)。这里都是以浏览器作为客户端发起请求。

用到的模块以及框架(使用前请先安装好):

1.requests

使用requests进行简单的爬取

import requests

requests的方法很多,这里主要使用到

requests.request(method, url, **kwargs),

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

requests.post(url, data=None, json=None, **kwargs)

method:请求方法,传参字符串形式,包括’‘GET’’, ‘‘OPTIONS’’, ‘‘HEAD’’, ‘‘POST’’, ‘‘PUT’’, ‘‘PATCH’’,’‘DELETE’’。

url:请求地址,即要爬取的网页的网址,字符串形式传参,如:https://www.baidu.com/

**kwargs:包括params(get请求的请求参数),data(post请求的请求参数),json(请求体中的json数据),headers(请求头),cookies,timeout等等,使用关键字传参

简单的爬取百度图片

import requests
import uuid
import os
import re

def image_download(url):
    # 拿到百度图片搜索结果的页面-->https://visualhunt.com/popular/?scolor=Blue
    resp = requests.request(url=url,method='GET')
    # 使用正则把每张图片的地址筛选出来,其中resp.text得到的是"https://visualhunt.com/popular/?scolor=Blue"整个页面的代码文本
    a = re.findall(r'https://.*?\.jpg',resp.text)
    # 返回的a是所有图片的地址(url),a个是列表-->[url1,url2,...]
    for x in a:
        # 再对每一张图片的url发起请求返回一个response对象
        res = requests.request(url=x,method='GET')
        with open(f'壁纸/{uuid.uuid4()}{os.path.splitext(res.url)[-1]}', 'bw') as f:
            # res.content返回的是字节数据,将该字节数据写入本地文件,图片就在磁盘中保存成功啦
            f.write(res.content)
if __name__ == '__main__':
    image_download('https://visualhunt.com/popular/?scolor=Blue')

2.urllib

urllib相比requests要麻烦一点

from urllib.request import urlopen

使用urlopen()发起请求,得到一个类文件响应对象–>http.client.HTTPResponse类对象

urlopen()的参数:

urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT,
            *, cafile=None, capath=None, cadefault=False, context=None)
  • 一般只用到url,data,timeout。
    • timeout指超时时间,超过指定的时间没有请求到则结束请求,单位为秒,如:timeout=120。
    • url是请求地址(字符串)或请求对象(response)。
    • data如果不为空,则默认是post请求,data是请求参数,但必须要经过url编码;如果data为空,则默认是get请求。其余的参数可以去查看源码或文档
  • urlopen()响应对象常用的方法和属性:此处以resp为响应对象
    • resp.read(),返回响应资源的字节数据
    • resp.geturl(),返回请求路径
    • resp.info(),返回远程服务器返回的响应头信息,属于httplib.HTTPMessage类
    • resp.headers,返回响应头,是一个ht
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值