爬虫实例系列一(requests)
一 爬虫简介
'''
爬虫:通过编写程序,模拟浏览器上网,让其去互联网上爬取数据的过程 分类:
通用爬虫:爬取全部的页面数据
聚焦爬虫:抓取页面中局部数据
增量式爬虫:爬取网站中更新出的数据 反爬机制:门户网站会通过制定相关的技术手段,组织爬虫程序进行数据获取
反反爬策略:针对反爬机制制定的策略,为了获取数据 第一个反爬机制:
robots.txt协议:防君子不防小人的协议
'''
二 request 入门使用流程
''' request使用流程:
- 制定url
- 发起请求
- 获取响应回来的页面数据
- 持久化存储 '''
三 实例
1 获取搜狗页面(反反爬机制:防君子不防小人)
import requests #获取搜狗页面数据 #1.指定url
url='https://www.sogo.com/' #2.发起请求
response=requests.get(url=url) #3.获取页面数据
response_text=response.text #4.持久化存储
with open('sogo.html',mode='w',encoding='utf8') as f:
f.write(response_text)
2 获取知乎页面数据(UA伪装)
'''
User-Agent:请求载体的身份标识
反爬机制:UA检测
反反爬策略:UA伪装
'''
#请求知乎 url='https://www.zhihu.com/' #指定请求头,进行UA伪装
headers={
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.20 Safari/537.36'
}
response=requests.get(url=url,headers=headers) print(response.text)
3 post请求实例(请求百度翻译结果)
#请求百度翻译结果 #经过分析发现,百度翻译发送的请求是ajax请求
import requests url='https://fanyi.baidu.com/sug' #指定请求头,进行UA伪装
headers={
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.20 Safari/537.36'
} #搜索数据不要写死 kw=input('input a word:')
#构建请求数据
data={
'kw':kw
} response=requests.post(url=url,headers=headers,data=data) print(response.json())
4 post 请求携带更多参数data={}
#爬取城市肯德基餐厅的位置信息 http://www.kfc.com.cn/kfccda/storelist/index.aspx '''
抓包获取的数据
Request URL: http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword
Request Method: POST
Status Code: 200 OK
Remote Address: 120.92.131.8:80
Referrer Policy: no-referrer-when-downgrade
''' import requests url='http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword' headers={
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.20 Safari/537.36'
} data={
'cname':'',
'pid':'',
'keyword': '深圳',
'pageIndex': 3,
'pageSize': 10,
} response=requests.post(url=url,headers=headers,data=data) print(response.json())
5 爬取豆瓣电影中的详细数据(ajax请求)
import requests #爬取豆瓣电影中的详细数据(ajax请求) #'https://movie.douban.com/j/chart/top_list?type=24&interval_id=100%3A90&action=&start=20&limit=20' url='https://movie.douban.com/j/chart/top_list' headers={
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.20 Safari/537.36'
}
#此处参数已经写死,后续项目中在此基础修改
params={
'type': '',
'interval_id': '100:90',
'action':'',
'start':'',
'limit':'',
} response=requests.get(url=url,headers=headers,params=params) print(response.json())
爬虫实例系列一(requests)的更多相关文章
- 爬虫实例之使用requests和Beautifusoup爬取糗百热门用户信息
这次主要用requests库和Beautifusoup库来实现对糗百的热门帖子的用户信息的收集,由于糗百的反爬虫不是很严格,也不需要先登录才能获取数据,所以较简单. 思路,先请求首页的热门帖子获得用户 ...
- 爬虫入门系列(二):优雅的HTTP库requests
在系列文章的第一篇中介绍了 HTTP 协议,Python 提供了很多模块来基于 HTTP 协议的网络编程,urllib.urllib2.urllib3.httplib.httplib2,都是和 HTT ...
- 爬虫入门系列(三):用 requests 构建知乎 API
爬虫入门系列目录: 爬虫入门系列(一):快速理解HTTP协议 爬虫入门系列(二):优雅的HTTP库requests 爬虫入门系列(三):用 requests 构建知乎 API 在爬虫系列文章 优雅的H ...
- 爬虫系列(七) requests的基本使用
一.requests 简介 requests 是一个功能强大.简单易用的 HTTP 请求库,可以使用 pip install requests 命令进行安装 下面我们将会介绍 requests 中常用 ...
- python爬虫学习(6) —— 神器 Requests
Requests 是使用 Apache2 Licensed 许可证的 HTTP 库.用 Python 编写,真正的为人类着想. Python 标准库中的 urllib2 模块提供了你所需要的大多数 H ...
- Python爬虫实例:爬取B站《工作细胞》短评——异步加载信息的爬取
很多网页的信息都是通过异步加载的,本文就举例讨论下此类网页的抓取. <工作细胞>最近比较火,bilibili 上目前的短评已经有17000多条. 先看分析下页面 右边 li 标签中的就是短 ...
- Python爬虫实例:爬取猫眼电影——破解字体反爬
字体反爬 字体反爬也就是自定义字体反爬,通过调用自定义的字体文件来渲染网页中的文字,而网页中的文字不再是文字,而是相应的字体编码,通过复制或者简单的采集是无法采集到编码后的文字内容的. 现在貌似不少网 ...
- Python爬虫实例:爬取豆瓣Top250
入门第一个爬虫一般都是爬这个,实在是太简单.用了 requests 和 bs4 库. 1.检查网页元素,提取所需要的信息并保存.这个用 bs4 就可以,前面的文章中已经有详细的用法阐述. 2.找到下一 ...
- [python爬虫]Requests-BeautifulSoup-Re库方案--Requests库介绍
[根据北京理工大学嵩天老师“Python网络爬虫与信息提取”慕课课程编写 文章中部分图片来自老师PPT 慕课链接:https://www.icourse163.org/learn/BIT-10018 ...
随机推荐
- 从锅炉工到AI专家(9)
无监督学习 前面已经说过了无监督学习的概念.无监督学习在实际的工作中应用还是比较多见的. 从典型的应用上说,监督学习比较多用在"分类"上,利用给定的数据,做出一个决策,这个决策在有 ...
- WinSocket同时接入量的疑惑(求解...)
在写TCP应用的时候一般都通过Accept来接入连接的接入,但对于Socket来说这个Accept同时能处理多大的量一般都没有明确说明,在应用中主要根据自己的需要设置Listen的队列数量.那List ...
- react~props和state的介绍与使用
props是参数的传递,从上层模块向下层模块进行拿传递:而state是提局域变量,一般在本模块内使用,props是不能改变的,而state可以通过setState去修改自身的值. props Reac ...
- .NET Core2.1获取自定义配置文件信息
前言 .net core来势已不可阻挡.既然挡不了,那我们就顺应它.了解它并学习它.今天我们就来看看和之前.net版本的配置文件读取方式有何异同,这里不在赘述.NET Core 基础知识. ps:更新 ...
- Java开发知识之Java数组
Java开发知识之Java数组 一丶数组简介 首先,不管是Java 还是 C++ 还是其它语言.都有数组. (有可能叫法不同) 数组简而言之就是存储一段连续相同数据类型的数据结构 在Java中数组可以 ...
- Mongodb副本集--Out of memory: Kill process 37325 (mongod)
1.Mongodb副本集--Out of memory: Kill process 37325 (mongod) 场景描述: 恢复一个22TB数据的mongodb实例的时候. 将备用结点加入mongo ...
- javascript sort 函数用法
sort 函数 博客地址:https://ainyi.com/41 简单的说,sort() 在没有参数时,返回的结果是按升序来排列的.即字符串的Unicode码位点(code point)排序 [5, ...
- Unity的四元素与Vector3的乘积的含义
Quaternion.Euler(x,y,z)含义是按照每个旋转轴以x,y,z旋转度旋转,例子:Quaternion.Euler(45,45,45) Quaternion与Vector3的右乘操作(* ...
- [Go] golang无缓冲通道实现工作池控制并发
展示如何使用无缓冲的通道创建一个goroutine池,控制并发频率1.无缓冲通道保证了两个goroutine之间的数据交换2.当所有的goroutine都忙的时候,能够及时通过通道告知调用者3.无缓冲 ...
- [android]常见的adb指令
/**********************2016年4月23日 更新**************************************/ 知乎:在windows的cmd执行adb she ...