129 爬虫 requests request 爬图片
主要内容:
1 爬虫理论:
a 爬虫的概念: 编写程序模拟浏览器上网, 然后让其去网上爬取数据的过程
b 爬虫的分类:
通用爬虫: 搜索引擎“抓取系统(爬虫程序)”的重要组成部分。
聚焦爬虫: 根据指定的需求抓取页面中指定的内容。
c 反爬机制:门户网站给通过相关的技术手段或者策略来阻止爬虫进行数据的抓取.
d 反反爬策略: 爬虫程序通过相关的技术或者策略破解反爬.
e 反爬机制: robtos.txt协议
f http:超文本传输协议。客户端和服务器端进行数据交互的一种交互形式。
h https:安全超文本传输协议。SSL加密层。
l user-agent: 请求载体的身份标识, content_type :响应的数据类型
m 对称秘钥加密: 非对称秘钥加密, 证书加密
2 requests 模块: 是python中一个原生的基于网络请求的模块
a : 安装 pip3 install requests
b : 使用流程: 指定url, 发起请求, 获取页面数据, 页面数据持久化存储
c : 爬虫事例:
import requests
#1.指定url
url = 'https://www.sogou.com'
#2.发起请求:get返回值为响应对象
response = requests.get(url=url,proxies={'https':'80.78.72.152:39172'})
#3.获取页面数据:text属性返回的是字符串类型的页面数据,content返回的是二进制的页面数据
#page_text = response.content
page_text = response.text
#4
with open('./sogou.html','w',encoding='utf-8') as fp:fp.write(page_text)
反爬机制: 对ua进行伪装操作
#UA反爬机制:对UA进行伪装操作
#请求头信息
import requests
url = 'https://www.qiushibaike.com/'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'
}
#headers参数:请求的请求头信息
response = requests.get(url=url,headers=headers)
response
抓取肯德基餐厅的位置信息:
import requests kdj_info = [] url = "http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword" city = input("请输入一个城市的名字:>>>") data = {"cname":"","pid":"","keyword":city,"pageIndex": 1,"pageSize": 10, } headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36' } response = requests.post(url=url, headers=headers, data=data) result = response.json()# 构建自己想要的数据结构 for index, one in enumerate(result["Table1"]): # print(index, one)kdj_info.append({"序号":index + 1, "店名":one["storeName"], "地址":one["addressDetail"]}) for store_info in kdj_info:print(store_info)
View Code
爬去药监总局的相关信息:
#http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList import requests first_url = "http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList" id_list = [] detail_list = [] result_list = [] start_page = int(input("请输入开始页")) end_page = int(input("请输入结束页")) headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36' } for i in range(start_page, end_page+1):data = {'on': 'true','page':str(i),'pageSize': '15','productName':'','conditionType': '1','applyname':'','applysn':''}response = requests.post(url=first_url, data=data, headers=headers).json()for info in response["list"]:id_list.append(info["ID"]) res_url = "http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById"for id in id_list:data = {"id":id}res_response = requests.post(url=res_url, data=data, headers=headers).json()detail_list.append(res_response) # print(detail_list) # 数据结构的构建 for detail in detail_list:result_list.append({"创始人":detail["businessPerson"], "地址":detail["epsAddress"]})for every_info in result_list:print(every_info)
View Code
3 爬图片
import requests
from urllib import request,parse
url = 'http://pics.sc.chinaz.com/files/pic/pic9/201812/zzpic15565.jpg'img_data = requests.get(url=url).contentwith open('./siwa.jpg','wb') as fp:fp.write(img_data)
爬取图片的第二种方法
url = 'http://pics.sc.chinaz.com/files/pic/pic9/201812/zzpic15565.jpg'
request.urlretrieve(url=url,filename='./meinv.png')
request.urlopen(url=url).read()
# url = 'https://www.baidu.com/s?wd=人民币'# request.urlopen(url=url)parse.quote('人民币')
4 正则匹配: . * ? re.S re.M:https://www.cnblogs.com/pugang/p/10123285.html
a re.s的用法:在Python的正则表达式中,有一个参数为re.S。它表示“.”(不包含外侧双引号,下同)的作用扩展到整个字符串,包括“\n”。看如下代码:
import re
a = '''asdfsafhellopass:234455worldafdsf'''
b = re.findall('hello(.*?)world',a)
c = re.findall('hello(.*?)world',a,re.S)
print 'b is ' , b
print 'c is ' , c
运行结果
b is []
c is ['pass:\n\t234455\n\t']
正则表达式中,“.”的作用是匹配除“\n”以外的任何字符,也就是说,它是在一行中进行匹配。这里的“行”是以“\n”进行区分的。a字符串有每行的末尾有一个“\n”,不过它不可见。
如果不使用re.S参数,则只在每一行内进行匹配,如果一行没有,就换下一行重新开始,不会跨行。而使用re.S参数以后,正则表达式会将这个字符串作为一个整体,将“\n”当做一个普通的字符加入到这个字符串中,在整体中进行匹配。
b re.M:仍然是整句话,这是因为^和$只匹配整个字符串的起始和结束。在多行模式下,^除了匹配整个字符串的起始位置,还匹配换行符后面的位置;$除了匹配整个字符串的结束位置,还匹配换行符前面的位置.
>>> re.findall(r'^This.*?line.$', a, flags=re.DOTALL+re.MULTILINE)
['This is the first line.', 'This is the second line.', 'This is the third line.']
更本质的说法是 多行模式改变了^和$的匹配行为
5 正则解析
#1.检查页面数据是否为动态加载出来的
#2.获取页面源码数据
import re
import requests
from urllib import request
import os
if not os.path.exists('qiutu'):os.mkdir('qiutu')headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
}
url = 'https://www.qiushibaike.com/pic/'
page_text = requests.get(url=url,headers=headers).text
#3.解析img标签的src属性值
ex = '<div class="thumb">.*?<img src="(.*?)" alt=.*?</div>'
img_url_list = re.findall(ex,page_text,re.S)
for img_url in img_url_list:img_url = 'https:'+img_urlimgPath = 'qiutu/'+img_url.split('/')[-1]#4.对图片url发请求#5.持久化存储request.urlretrieve(url=img_url,filename=imgPath)print(imgPath+'下载成功!!!')
转载于:https://www.cnblogs.com/gyh412724/p/10235919.html
129 爬虫 requests request 爬图片相关推荐
- Python借助爬虫Requests+BS4爬取人民教育出版社义务教育下学期课本(一)
经过一晚上的休息,我已经重新从阴影中站了起来,并重新发现了一个人性化的网站,一起来看看这个网站吧 来到了人民教育出版社的官网,一看,顿时晕眩三秒,我昨天的努力不都白费了吗,只得重新打起精神,研究一下这 ...
- python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程
python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程 前言 一丶整体思路 二丶遇到的问题 三丶分析URL 四丶解析页面 五丶写入文件 六丶完整代码 七丶最后 前言 大家好我是墨绿 头顶总 ...
- Python借助爬虫Requests+BS4爬取人民教育出版社义务教育下学期课本(二)
文章目录 思路梳理 封装函数 重要提示 系列文章 思路梳理 我们打开网页,可以看到这其中有许多链接,我们可以查看一下网页源代码,可以看到如我们所期盼的一样,这里有许多的链接,我们只需要把链接爬取出来就 ...
- 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xa)的解决方法【华为云分享】
[写在前面] 在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\ ...
- 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xaf\x8c\xe7\x9)的解决方法
[写在前面] 在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\ ...
- python爬虫 requests+lxml爬取前程无忧网之模拟浏览器登录
"前程无忧"(Nasdaq: JOBS) : 是国内一个集多种媒介资源优势的专业人力资源服务机构,创始人为甄荣辉.它集合了传统媒体.网络媒体及先进的信息技术,加上一支经验丰富的专业 ...
- python 爬虫 requests+BeautifulSoup 爬取巨潮资讯公司概况代码实例
第一次写一个算是比较完整的爬虫,自我感觉极差啊,代码low,效率差,也没有保存到本地文件或者数据库,强行使用了一波多线程导致数据顺序发生了变化... 贴在这里,引以为戒吧. # -*- coding: ...
- 爬虫requests如何提取图片_如何提取图片上的文字(办公技巧)
是夜,公寓里,一道黑影闪过窗前,对面楼顶传来一声凄厉的猫叫声. 王美丽一个机灵,目中闪过一丝恐惧. 她面前的电脑里,正在播放<午夜凶铃>. 阴森恐怖的配音,让她全身发冷,感觉后脊梁有一股凉 ...
- python爬虫——requests+xpath 爬取8684公交查询网站
一.分析网站 url = 'http://xian.8684.cn/' 1.第二层路线xpath: # 查找以数字开头的所有链接number_href_list = tree.xpath('//div ...
- python爬虫requests实战_Python爬虫之requests库网络爬取简单实战
实例1:直接爬取网页 实例2 : 构造headers,突破访问限制,模拟浏览器爬取网页 实例3 : 分析请求参数,构造请求参数爬取所需网页 实例4: 爬取图片 实例5: 分析请求参数,构造请求参数爬取 ...
最新文章
- 中国农民丰收节交易会李喜贵演讲 微量元素运用功能农业
- 你的Wi-Fi 还安全吗?全球重大漏洞WPA2 KRACK 详细分析报告
- 工厂模式(简单工厂、工厂方法、抽象工厂)
- P5091-[模板]欧拉定理
- esd防护_电路级ESD防护方法
- crfpp python
- 【Shell】按关键字查找某个字符
- C语言程序设计实验报告——实验一
- 通达信标记符号_史上最全的通达信软件中常见的一些字母/字符标识的含义(图解)...
- 所谓的AI芯片到底指什么?
- pc登录2个微信客户端
- 山重水复疑无路_最快下降问梯度(深度学习入门系列之七)
- 电脑键盘上各个按键功能详解
- 《浊酒一杯忆往昔, 似水流年探追忆》
- 百度api英文验证码
- 漫反射与Lambert模型
- Python写入数据到txt文本中
- 音视频开发之旅(34) - 基于FFmpeg实现简单的视频解码器
- 2010-12-01: EverBox 宝宝诞生了,成为 EverBox 粉丝拿 100GB 大奖!
- 你公司到底需不需要引入实时计算引擎?