一 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. HashMap ( Java 8)

    HashTable是早起java提供的基于hash表的实现,不允许存放null键和值,是同步的,影响开销,不太被推荐. HashMap行为上和HashTable差不多,不是同步的,允许键和值为null ...

  2. CSS 常用操作

    1.对齐 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...

  3. mysql安装到最后一步无响应的问题超简单最有效解决

    mysql安装到最后一步无响应的问题超简单最有效解决 无论你是安装过还是没安装过,通过此方法都可以解决.之前我的机器和服务器就是都到最后一步卡住,上网搜索方法都无果.后自己尝试了很多次,亲测64位机和 ...

  4. 关于C/C++的各种优化

    一.常量 声明常量可以方便代码的修改,提高复用性. ; +; ; 同时,声明常量也可以减少重复运算,提高代码速度,例子如下: string s; cin>>s; ;i<len;i++ ...

  5. HDU 5045 状压DP 上海网赛

    比赛的时候想的是把n个n个的题目进行状压 但这样不能讲究顺序,当时精神面貌也不好,真是挫死了 其实此题的另一个角度就是一个n个数的排列,如果我对n个人进行状压,外面套一个按题目循序渐进的大循环,那么, ...

  6. poj1703 Find them, Catch them(种类并查集

    题目地址:http://poj.org/problem?id=1703 题目大意:警察抓了n个坏蛋,这些坏蛋分别属于龙帮或蛇帮.输入m个语句,A x y询问x和y的关系(在一个帮派,不在,不能确定), ...

  7. 初级入门 --- web GL绘制点

    " 万丈高楼平地起." 01基础知识 一.相关术语 图元 :WebGL 能够绘制的基本图形元素,包含三种:点.线段.三角形. 片元:可以理解为像素,像素着色阶段是在片元着色器中. ...

  8. php hash算法实现memcached分布式

    一.概述Memcached和mysql一样,是一款客户端/服务器端(C/S)系统管理软件,有IP.端口,一旦启动,服务器就一直处于可用状态.Mysql是通过SQL语句管理“磁盘中”的文件,Memcac ...

  9. python3.7的一些心得,不定期更新。

    学习的python3.7.2,最新目前是3.8.1 这里记一下主要的几点: pip 是python的模块管理器,姑且这么叫它.和nodejs的npm一样的功能 官网下载python安装包,默认就会按照 ...

  10. ②初识spring

    一:基础搭建 需要:eclipse.spring插件(确认版本号并下载对应插件详见:https://blog.csdn.net/a1150499208/article/details/87988392 ...