查询参数-params1.参数类型 字典,字典中键值对作为查询参数 2.使用方法 1、res = requests.get(url,params=params,headers=headers) 2、特点: * url为基准的url地址,不包含查询参数 * 该方法会自动对params字典编码,然后和url拼接 3.示例 import requests baseurl = 'http://tieba.baidu.com/f?' params = { 'kw' : '赵丽颖吧', 'pn' : '50' } headers = {'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'} # 自动对params进行编码,然后自动和url进行拼接,去发请求 res = requests.get(baseurl,params=params,headers=headers) res.encoding = 'utf-8' print(res.text) web客户端验证 参数-auth1.作用类型 1、针对于需要web客户端用户名密码认证的网站 2、auth = ('username','password') 2.通过用户名账号密码获取笔记名称案例 import requests from lxml import etree import os class NoteSpider(object): def __init__(self): self.url = 'http:///Code/aid1904/redis/' self.headers = {'User-Agent':'Mozilla/5.0'} self.auth = ('code','code_2013') # 获取 def get_html(self): html = requests.get(url=self.url,auth=self.auth,headers=self.headers).text return html # 解析提取数据 + 把笔记压缩包下载完成 def parse_page(self): html = self.get_html() xpath_bds = '//a/@href' parse_html = etree.HTML(html) # r_list : ['../','day01','day02','redis_day01.zip'] r_list = parse_html.xpath(xpath_bds) for r in r_list: if r.endswith('zip') or r.endswith('rar'): print(r) if __name__ == '__main__': spider = NoteSpider() spider.parse_page() 思考:爬取具体的笔记文件? import requests from lxml import etree import os class NoteSpider(object): def __init__(self): self.url = 'http:///Code/redis/' self.headers = {'User-Agent':'Mozilla/5.0'} self.auth = ('code','code_2013') # 获取 def get_html(self): html = requests.get(url=self.url,auth=self.auth,headers=self.headers).text return html # 解析提取数据 + 把笔记压缩包下载完成 def parse_page(self): html = self.get_html() xpath_bds = '//a/@href' parse_html = etree.HTML(html) # r_list : ['../','day01','day02','redis_day01.zip'] r_list = parse_html.xpath(xpath_bds) for r in r_list: if r.endswith('zip') or r.endswith('rar'): file_url = self.url + r self.save_files(file_url,r) def save_files(self,file_url,r): html_content = requests.get(file_url,headers=self.headers,auth=self.auth).content # 判断保存路径是否存在 directory = '/home/redis/' filename = directory + r SSL证书认证参数-verify1.适用网站及场景 1、适用网站: https类型网站但是没有经过 证书认证机构 认证的网站 2、适用场景: 抛出 SSLError 异常则考虑使用此参数 2.参数类型 1、verify=True(默认) : 检查证书认证 2、verify=False(常用): 忽略证书认证 # 示例 response = requests.get( url=url, params=params, headers=headers, verify=False ) 代理参数-proxies1.定义 1、定义: 代替你原来的IP地址去对接网络的IP地址。 2、作用: 隐藏自身真实IP,避免被封。 2.普通代理 获取代理IP网站 西刺代理、快代理、全网代理、代理精灵、... ... 参数类型 1、语法结构 proxies = { '协议':'协议://IP:端口号' } 2、示例 proxies = { 'http':'http://IP:端口号', 'https':'https://IP:端口号' } 示例代码 (1)使用免费普通代理IP访问测试网站: http:///get import requests url = 'http:///get' headers = { 'User-Agent':'Mozilla/5.0' } # 定义代理,在代理IP网站中查找免费代理IP proxies = { 'http':'http://112.85.164.220:9999', 'https':'https://112.85.164.220:9999' } html = requests.get(url,proxies=proxies,headers=headers,timeout=5).text print(html) 思考: 建立一个自己的代理IP池,随时更新用来抓取网站数据 1.从代理IP网站上,抓取免费的代理IP 2.测试抓取的IP,可用的保存在文件中 (2)写一个获取收费开放代理的接口 ![]() (3)使用随机收费开放代理IP写爬虫 ![]() 3.私密代理 语法格式 1、语法结构 proxies = { '协议':'协议://用户名:密码@IP:端口号' } 2、示例 proxies = { 'http':'http://用户名:密码@IP:端口号', 'https':'https://用户名:密码@IP:端口号' } 示例代码 import requests url = 'http:///get' proxies = { 'http': 'http://309435365:szayclhp@106.75.71.140:16816', 'https':'https://309435365:szayclhp@106.75.71.140:16816', } headers = { 'User-Agent' : 'Mozilla/5.0', } html = requests.get(url,proxies=proxies,headers=headers,timeout=5).text print(html) urllib和urllib2关系 #python2 urllib :URL地址编码 urllib2:请求 #python3 - 把python2中urllib和urllib2合并 urllib.parse:编码 urllib.requests: 请求 控制台抓包打开方式几常用选项 1、打开浏览器,F12打开控制台,找到Network选项卡 2、控制台常用选项 1、Network: 抓取网络数据包 1、ALL: 抓取所有的网络数据包 2、XHR:抓取异步加载的网络数据包 3、JS : 抓取所有的JS文件 2、Sources: 格式化输出并打断点调试JavaScript代码,助于分析爬虫中一些参数 3、Console: 交互模式,可对JavaScript中的代码进行测试 3、抓取具体网络数据包后 1、单击左侧网络数据包地址,进入数据包详情,查看右侧 2、右侧: 1、Headers: 整个请求信息 General、Response Headers、Request Headers、Query String、Form Data 2、Preview: 对响应内容进行预览 3、Response:响应内容
|
|