《python网络爬虫与信息提取》学习笔记(一)

Requests自动爬取html页面自动网络请求提交

1、request库入门

  • request库的安装

    《python网络爬虫与信息提取》学习笔记(一)_第1张图片
    《python网络爬虫与信息提取》学习笔记(一)_第2张图片

    get()head()post()put()patch()delete()方法都是由request()方法封装而成

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

url:拟获取页面的url链接
params:url中的额外参数,字典或字节流格式,可选
**kwargs:12个控制访问参数

构造一个向服务器请求资源的Request对象
返回一个包含服务器资源的Response对象(包含爬虫返回的全部内容)

《python网络爬虫与信息提取》学习笔记(一)_第3张图片
《python网络爬虫与信息提取》学习笔记(一)_第4张图片
《python网络爬虫与信息提取》学习笔记(一)_第5张图片
《python网络爬虫与信息提取》学习笔记(一)_第6张图片
爬取网页爬虫的通用代码框架
由于网络连接有风险,所以request语句不一定成立,因此异常处理很重要。
《python网络爬虫与信息提取》学习笔记(一)_第7张图片
raise_for_status()判断返回的response状态是否为200,如果是表示返回的内容正确
《python网络爬虫与信息提取》学习笔记(一)_第8张图片
通用代码框架:

import requests
def getHTMLText(url):
    try:
        r=requests.get(url,timeout=30)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        return r.text
    except:
        return "产生异常"

    if _name_="_main_":
        url="http://www.baidu.com"
        print(getHTMLText(url))

http协议与request库的主要方法:
Http协议:是一个基于“请求与响应”模式的、无状态的应用层协议,采用URL作为定位网络资源的情况。
URL格式:http://host[:port][path]
host:合法的iinternet主机域名或ip地址
port:端口号,缺省端口为80
path:请求资源在主机或ip地址的服务器上包含的的内部路径
《python网络爬虫与信息提取》学习笔记(一)_第9张图片
《python网络爬虫与信息提取》学习笔记(一)_第10张图片
《python网络爬虫与信息提取》学习笔记(一)_第11张图片
patch可以节省网络带宽
《python网络爬虫与信息提取》学习笔记(一)_第12张图片
由于网络安全,很难向服务器发起post、put、delete请求,尝使用get,head
《python网络爬虫与信息提取》学习笔记(一)_第13张图片
《python网络爬虫与信息提取》学习笔记(一)_第14张图片
说明向url post一个字典时自动编码为form(表单)
《python网络爬虫与信息提取》学习笔记(一)_第15张图片
说明向url post一个字符串时自动编码为data,put方法类似

requests库主要方法解析
《python网络爬虫与信息提取》学习笔记(一)_第16张图片
options向服务器获取一些与客户端打交道的参数,不与获取资源直接相关
在这里插入图片描述
2、网络爬虫的盗亦有道
网络爬虫引发的问题:骚扰问题、法律风险、隐私泄露
《python网络爬虫与信息提取》学习笔记(一)_第17张图片
《python网络爬虫与信息提取》学习笔记(一)_第18张图片
《python网络爬虫与信息提取》学习笔记(一)_第19张图片
无robots协议默认可以爬所有信息,类人行为可不参考robots协议
3、request库爬取实例
实例一:京东商品页面的爬取
《python网络爬虫与信息提取》学习笔记(一)_第20张图片

import requests

url = "https://item.jd.com/100002432068.html"
try:
    r = requests.get(url)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text[:1000])
except:
    print("爬取失败")

《python网络爬虫与信息提取》学习笔记(一)_第21张图片
实例二:亚马逊商品页面的爬取
访问出现了错误
《python网络爬虫与信息提取》学习笔记(一)_第22张图片亚马逊告诉我们出现了错误而错误似乎是由api造成的,有些网站通过判断访问请求的http头来判断访问是否是由爬虫引起的
《python网络爬虫与信息提取》学习笔记(一)_第23张图片从user-agent可以看出这样的访问告知了亚马逊服务器是由爬虫程序访问的,因此遭到了拒绝
《python网络爬虫与信息提取》学习笔记(一)_第24张图片设法更改头部信息
《python网络爬虫与信息提取》学习笔记(一)_第25张图片
实例三:百度360搜索关键字提交
在这里插入图片描述
params参数可用于向url中增加参数
《python网络爬虫与信息提取》学习笔记(一)_第26张图片
通过安全验证之后成功爬取
《python网络爬虫与信息提取》学习笔记(一)_第27张图片
爬取百度的信息

import requests

url = "https://www.baidu.com/s"
try:
    kv = {"wd": "python"}
    r = requests.get(url, params=kv)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text)
except:
    print("爬取失败")

爬取360的信息

import requests

url = "https://www.so.com/s"
try:
    kv = {"wd": "python"}
    r = requests.get(url, params=kv)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text)
except:
    print("爬取失败")

实例四:网络图片的爬取和存储
《python网络爬虫与信息提取》学习笔记(一)_第28张图片
content是以二进制形式返回信息

《python网络爬虫与信息提取》学习笔记(一)_第29张图片

import requests
import os

url = "http://a2.att.hudong.com/36/48/19300001357258133412489354717.jpg"
root = "D://1//"
path = root + url.split('/')[-1]
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("爬取失败")

os.path.exists()就是判断括号里的文件是否存在的意思,括号内的可以是文件路径。
'wb’以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
《python网络爬虫与信息提取》学习笔记(一)_第30张图片实例四:IP地址归属地的动态查询
www.ip138.com可以查询
《python网络爬虫与信息提取》学习笔记(一)_第31张图片

import requests

url = "http://m.ip138.com/ip.asp?ip="

try:
    r = requests.get(url + '202.204.80.112')
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text[-500:])
except:
    print("爬取失败")

你可能感兴趣的:(python学习)