一 requests模块

  • 概念:

    • python中原生的基于网络请求的模块,模拟浏览器进行请求发送,获取页面数据
  • 安装: pip install requests

二 requests使用的步骤

  • 1 指定url
  • 2 基于requests模块请求发送
  • 3 获取响应对象中的数据值(text)
  • 4 持久化储存

三 反反爬

  • 1 设置ip
  • 2 设置UA
import requests

word = input('请你输入你要查的词')

url = 'https://www.sogou.com/web?'

params = {
'query': word
} heards = {
'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.get(url=url, params=params,heards=heards,proxies={'https': '62.103.68.8:8080'}) ######UA 和 IP page_tail = response.text filename = word + '.html' with open(filename, 'w', encoding='utf-8') as f:
f.write(page_tail)

四  示例

No.1基于requests模块的get请求 

需求1:爬取搜狗首页的页面数据

import requests

# 1 指定url
url = 'https://www.sogou.com/'
# 2 基于ruquests模块发送请求
response = requests.get(url=url)
# 3 获取响应对象的数据值
page_text = response.text
# 4 持久化存储
with open('./sogou.html','w',encoding='utf-8') as f:
f.write(page_text)

注意: 对于上面的代码

response.content             返回二进制的页面数据
response.headers 返回响应头信息
response.status_code 返回响应200
response.url 返回是地址
response.encoding 返回的是响应对象中存储数据的原始编码程序

需求2:爬取搜狗指定词搜索后的页面数据

import requests

word = input('请你输入你要查的词')
url = 'https://www.sogou.com/web' param = {
'query': word
}
response = requests.get(url=url, params=param) page_text = response.text
filename = word+'.html'
with open(filename, 'w', encoding='utf-8') as f:
f.write(page_text)

No.2基于requests模块的post请求  

需求3:登录豆瓣电影,爬取登录成功后的页面数据

# 依照我们上面所说的步骤
import requests url = 'https://www.douban.com/accounts/login' data = { # 在浏览器中找
"source": "index_nav",
"form_email": "xxxxxxxxx",
"form_password": "xxxxxxxxx"
} response = requests.post(url=url,data=data) page_text = response.text with open('douban.html', 'w', encoding='utf-8') as f:
f.write(page_text)

需求4:

基于requests模块ajax的get请求-------爬取豆瓣电影分类排行榜 https://movie.douban.com/中的电影详情数据 
import requests

url = 'https://movie.douban.com/j/chart/top_list?'

param = {                               #携带的数据
'type': '',
'interval_id': '100:90',
'action': '',
'start': '',
'limit': '',
} response = requests.get(url=url, params=param})
print(response.text)

需求5:基于requests模块ajax的post请求-------------------------爬取肯德基餐厅查询http://www.kfc.com.cn/kfccda/index.aspx中指定地点的餐厅数据

import requests

url = ' http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
city = input('请输入你要查的城市')
data = {
'cname': '',
'pid': '',
'keyword': city,
'pageIndex': '',
'pageSize': '',
}
response = requests.post(url=url, data=data)
print(response.text)

需求6:简单的爬取博客园前几页

import requests
import os url = 'https://www.cnblogs.com/#p'
if not os.path.exists('boke'):
os.mkdir('boke') start_page = int(input('enter a start page:'))
end_page = int(input('enter a end page:')) for page in range(start_page, end_page + 1):
url = url + str(page)
response = requests.get(url=url, proxies={'https': '62.103.68.8:8080'})
page_text = response.text fileName = str(page) + '.html'
filePath = './boke/' + fileName
with open(filePath, 'w', encoding='utf-8') as f:
f.write(page_text)
print('第%s页打印' % page)
# 根据实际情况   本段代码所保存的html,是同一个(第一页的内容),
# 我们从页面抓包可以知道,它在第二页的时候发送了一个post请求

import requests
import os url = "http://www.cnblogs.com/mvc/AggSite/PostList.aspx" # url
if not os.path.exists('boke'):
os.mkdir('boke') start_page = int(input('enter a start page:'))
end_page = int(input('enter a end page:')) for page in range(start_page, end_page+1):
data = {
"CategoryType": "SiteHome",
"ParentCategoryId": 0,
"CategoryId": 808,
"PageIndex": page,
"TotalPostCount": 4000,
"ItemListActionName": "PostList"
} res = requests.post(url=url, data=data, verify=False)
page_text = res.text fileName = str(page) + '.html'
filePath = './boke/' + fileName
with open(filePath, 'w', encoding='gbk') as f:
f.write(page_text)
print('第%s页打印' % page)

  


												

(二)requests模块的更多相关文章

  1. Python 爬虫二 requests模块

    requests模块 Requests模块 get方法请求 整体演示一下: import requests response = requests.get("https://www.baid ...

  2. 爬虫二 requests模块的使用

    一.requests模块的介绍 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) #注意:reques ...

  3. python网络爬虫之二requests模块

    requests http请求库 requests是基于python内置的urllib3来编写的,它比urllib更加方便,特别是在添加headers, post请求,以及cookies的设置上,处理 ...

  4. 爬虫——requests模块

    一 爬虫简介 #1.什么是互联网? 互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样. #2.互联网建立的目的? 互联网的核心价值在于数据的共享/传递:数据是 ...

  5. 爬虫学习(二)requests模块的使用

    一.requests的概述 requests模块是用于发送网络请求,返回响应数据.底层实现是urllib,而且简单易用,在python2.python3中通用,能够自动帮助我们解压(gzip压缩的等) ...

  6. requests模块--python发送http请求

    requests模块 在Python内置模块(urllib.urllib2.httplib)的基础上进行了高度的封装,从而使得Pythoner更好的进行http请求,使用Requests可以轻而易举的 ...

  7. python爬虫之requests模块介绍

    介绍 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) #注意:requests库发送请求将网页内容下 ...

  8. 爬虫 requests模块的其他用法 抽屉网线程池回调爬取+保存实例,gihub登陆实例

    requests模块的其他用法 #通常我们在发送请求时都需要带上请求头,请求头是将自身伪装成浏览器的关键,常见的有用的请求头如下 Host Referer #大型网站通常都会根据该参数判断请求的来源 ...

  9. 爬虫 requests 模块

    requests 模块 介绍 使用requests可以模拟浏览器的请求, 比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) ps: requests库发 ...

随机推荐

  1. linux之我的互联网面试经验

    互联网面试想必是每个学计算机的学生必不可少的环节,无论你的项目经验再多,你不准备基础知识,也还是无济于事.首先来说说关于工作的事情. 三年前,那时候我还是刚刚快要大四毕业的小鲜肉,那时候有个超大的招聘 ...

  2. 手写MQ框架(四)-使用netty改造梳理

    一.背景 书接上文手写MQ框架(三)-客户端实现,前面通过web的形式实现了mq的服务端和客户端,现在计划使用netty来改造一下.前段时间学习了一下netty的使用(https://www.w3cs ...

  3. 统计学习方法——KD树最近邻搜索

    李航老师书上的的算法说明没怎么看懂,看了网上的博客,悟出一套循环(建立好KD树以后的最近邻搜索),我想应该是这样的(例子是李航<统计学习算法>第三章56页:例3.3): 步骤 结点查询标记 ...

  4. Java 推荐读物与源代码阅读

    Java 推荐读物与源代码阅读                                                     江苏无锡  缪小东 1. Java语言基础     谈到Java ...

  5. linux问题故障

    分析问题的方法论 What-现象是什么样的 When-什么时候发生 Why-为什么会发生 Where-哪个地方发生的问 How much-耗费了多少资源 How to do-怎么解决问题 4. cpu ...

  6. POJ 3348:Cows 凸包+多边形面积

    Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7739   Accepted: 3507 Description ...

  7. 洛谷P2296 寻找道路

    \(\Large\textbf{Description:} \large {在有向图 G 中,每条边的长度均为 1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件:}\) \ ...

  8. springmvc 后台实体类接受前端json字符串时,其中一个属性content 接受富文本内容时 标签<p>、<span> 这些标签丢失问题解决

    问题描述: 前端一个字段 <script id="editor" type="text/plain" name="content" s ...

  9. uboot源码分析2-启动第二阶段

    一.背景知识 1.uboot第二阶段应该做什么? 概括来讲uboot第一阶段主要就是初始化了SoC内部的一些部件(譬如看门狗.时钟),然后初始化DDR并且完成重定位. 由宏观分析来讲,uboot的第二 ...

  10. gem5-gpu 选项解释

    ‘--split’ ,该项用于模拟独立显卡,GPU与CPU不在同一芯片上,两者的内存物理上隔绝,使用PCI-Express连接. ‘--access-host-pagetable’,该项用于模拟集成显 ...