Day30.爬虫基础之Requests

网络爬虫和文档内容提取 网络爬虫和文档内容提取 一、实验内容 1.设计一个网页爬虫程序或者配置运行开源的网络爬虫进行网页抓取,可以选择爬取新闻网站和电子商务网站的产品评论。不同主题类别的网页存放在不同的目录下 2.掌握网页的标签结构特点以及内容提取原理,设计和实现网页内容提取程序文档内容提取分为2个小题目,任选一个做。 a.提取新闻网页的标题,正文,发表时间。 b.提取某产品的每条产品评论内容,发表时间。 二、实验环境 实验环境:Python3.6.2, IDE:Pycharm 2019.1.3 三、实验功能 requests 库 阅读详情

爬虫基础之Requests



前言

本文主要是学习了requests库的简单实用。


一. request基础操作

1.1 实例引入

import requests

response = requests.get('https://www.baidu.com/')
print(type(response))
print(response.status_code)
print(type(response.text))
print(response.text)
print(response.cookies)

1.2 各种请求方式

requests.post('http://httpbin.org/post')
requests.put('http://httpbin.org/put')
requests.delete('http://httpbin.org/delete')
requests.head('http://httpbin.org/get')
requests.options('http://httpbin.org/get')

1.3 请求

1.3.1 基本GET请求

# 1. 基本写法
import requests

response = requests.get("http://httpbin.org/get")
print(response.text)


# 2.带参数GET请求
response = requests.get("http://httpbin.org/get?name=germey&age=22")
print(response.text)


# 另外一种设定参数的方法。
data = {
    'name': 'germey',
    'age': 22
}
response = requests.get("http://httpbin.org/get", params=data)
print(response.text)


# 3.解析json
import requests
import json

response = requests.get("http://httpbin.org/get")
print(type(response.text))
print(response.json())
print(json.loads(response.text))
print(type(response.json()))


# 4. 获取二进制数据

response = requests.get("https://github.com/favicon.ico")
print(type(response.text), type(response.content))
print(response.text)
print(response.content)

response = requests.get("https://github.com/favicon.ico")
with open('favicon.ico', 'wb') as f:
    f.write(response.content)
    f.close()


# 5.添加headers
response = requests.get("https://www.zhihu.com/explore")
print(response.text)

有些html反馈出现了403,显然是找不到网页信息的,所以大概率有反爬虫机制。

1.3.2 基本POST请求

data = {'name': 'germey', 'age': '22'}
response = requests.post("http://httpbin.org/post", data=data)
print(response.text)


data = {'name': 'germey', 'age': '22'}
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
}
response = requests.post("http://httpbin.org/post", data=data, headers=headers)
print(response.json())

1.4 响应

1.4.1 response 属性

response = requests.get('http://www.jianshu.com')
print(type(response.status_code), response.status_code)
print(type(response.headers), response.headers)
print(type(response.cookies), response.cookies)
print(type(response.url), response.url)
print(type(response.history), response.history)

1.4.2 状态码判断

response = requests.get('http://www.jianshu.com/hello.html')
exit() if not response.status_code == requests.codes.not_found else print('404 Not Found')


import requests

response = requests.get('http://www.jianshu.com')
exit() if not response.status_code == 200 else print('Request Successfully')

1.4.3 常见状态码总结

  1. 较好的返回
状态码返回信息
100(‘continue’,)
101(‘switching_protocols’,)
102(‘processing’,)
103(‘checkpoint’,)
122(‘uri_too_long’, ‘request_uri_too_long’)
200(‘ok’, ‘okay’, ‘all_ok’, ‘all_okay’, ‘all_good’, ‘\o/’, ‘✓’)
201(‘created’,)
202(‘accepted’,)
203(‘non_authoritative_info’, ‘non_authoritative_information’)
204(‘no_content’,)
205(‘reset_content’, ‘reset’)
206(‘partial_content’, ‘partial’)
207(‘multi_status’, ‘multiple_status’, ‘multi_stati’, ‘multiple_stati’)
208(‘already_reported’,)
226(‘im_used’,)
  1. Redirection(重新导向)
状态码返回信息
300(‘multiple_choices’,)
301(‘moved_permanently’, ‘moved’, ‘\o-’)
302(‘found’,)
303(‘see_other’, ‘other’)
304(‘not_modified’,)
305(‘use_proxy’,)
306(‘switch_proxy’,)
307(‘temporary_redirect’, ‘temporary_moved’, ‘temporary’)
308(‘permanent_redirect’,‘resume_incomplete’, ‘resume’,), # These 2 to be removed in 3.0
  1. Client Error(客户端错误)
状态码返回信息
400(‘bad_request’, ‘bad’)
401(‘unauthorized’,)
402(‘payment_required’, ‘payment’)
403(‘forbidden’,)
404(‘not_found’, ‘-o-’)
405(‘method_not_allowed’, ‘not_allowed’)
406(‘not_acceptable’,)
407(‘proxy_authentication_required’, ‘proxy_auth’, ‘proxy_authentication’)
408(‘request_timeout’, ‘timeout’)
409(‘conflict’,)
410(‘gone’,)
411(‘length_required’,)
412(‘precondition_failed’, ‘precondition’)
413(‘request_entity_too_large’,)
414(‘request_uri_too_large’,)
415(‘unsupported_media_type’, ‘unsupported_media’, ‘media_type’)
416(‘requested_range_not_satisfiable’, ‘requested_range’, ‘range_not_satisfiable’)
417(‘expectation_failed’,)
418(‘im_a_teapot’, ‘teapot’, ‘i_am_a_teapot’)
421(‘misdirected_request’,)
422(‘unprocessable_entity’, ‘unprocessable’)
423(‘locked’,)
424(‘failed_dependency’, ‘dependency’)
425(‘unordered_collection’, ‘unordered’)
426(‘upgrade_required’, ‘upgrade’)
428(‘precondition_required’, ‘precondition’)
429(‘too_many_requests’, ‘too_many’)
431(‘header_fields_too_large’, ‘fields_too_large’)
444(‘no_response’, ‘none’)
449(‘retry_with’, ‘retry’)
450(‘blocked_by_windows_parental_controls’, ‘parental_controls’)
451(‘unavailable_for_legal_reasons’, ‘legal_reasons’)
499(‘client_closed_request’,)
  1. Server Error(服务器错误)
状态码返回信息
500(‘internal_server_error’, ‘server_error’, ‘/o\’, ‘✗’)
501(‘not_implemented’,)
502(‘bad_gateway’,)
503(‘service_unavailable’, ‘unavailable’)
504(‘gateway_timeout’,)
505(‘http_version_not_supported’, ‘http_version’)
506(‘variant_also_negotiates’,)
507(‘insufficient_storage’,)
509(‘bandwidth_limit_exceeded’, ‘bandwidth’)
510(‘not_extended’,)
511(‘network_authentication_required’, ‘network_auth’, ‘network_authentication’)

二. request高级操作

2.1 文件上传

files = {'file': open('favicon.ico', 'rb')}
response = requests.post("http://httpbin.org/post", files=files)
print(response.text)

2.2 获取cookie

import requests

response = requests.get("https://www.baidu.com")
print(response.cookies)
for key, value in response.cookies.items():
    print(key + '=' + value)

2.3 模拟登录

import requests

requests.get('http://httpbin.org/cookies/set/number/123456789')
response = requests.get('http://httpbin.org/cookies')
print(response.text)

s = requests.Session()
s.get('http://httpbin.org/cookies/set/number/123456789')
response = s.get('http://httpbin.org/cookies')
print(response.text)

2.4 整数验证

response = requests.get('https://www.12306.cn')
print(response.status_code)


import requests
from requests.packages import urllib3

urllib3.disable_warnings()
response = requests.get('https://www.12306.cn', verify=False)
print(response.status_code)


# 这里cert放入登录时验证需要的证书
response = requests.get('https://www.12306.cn', cert=('/path/server.crt', '/path/key'))
print(response.status_code)

2.5 代理设置

proxies = {
  "http": "http://127.0.0.1:1234",
  "https": "https://127.0.0.1:1234",
}

response = requests.get("https://www.taobao.com", proxies=proxies)
print(response.status_code)
# 这里无法连接,所以输入的代理一定得是能用的。


proxies = {
    "http": "http://user:password@127.0.0.1:1324/",
}
response = requests.get("https://www.taobao.com", proxies=proxies)
print(response.status_code)

2.6 超时设置

from requests.exceptions import ReadTimeout
try:
    response = requests.get("http://httpbin.org/get", timeout = 0.5)
    print(response.status_code)
except ReadTimeout:
    print('Timeout')

2.7 认证设置

import requests
from requests.auth import HTTPBasicAuth

r = requests.get('http://120.27.34.24:9001', auth=HTTPBasicAuth('user', '123'))
print(r.status_code)


import requests

# 相对于上面。简洁的写法
r = requests.get('http://120.27.34.24:9001', auth=('user', '123'))
print(r.status_code)

2.8 异常处理

import requests
from requests.exceptions import ReadTimeout, ConnectionError, RequestException

try:
    response = requests.get("http://httpbin.org/get", timeout = 0.5)
    print(response.status_code)
except ReadTimeout:
    print('Timeout')
except ConnectionError:
    print('Connection error')
except RequestException:
    print('Error')

总结

今天主要是简单的学习了request的常见使用,以及在不同的场景下的实际操作。如对于状态码的识别就可以很好地了解我们爬虫的状态。而且对于不同的场景,也提供了不同的案例供大家参考,有兴趣的小伙伴可以深入了解。

溜了溜了,脑壳疼。Loading(30/100)。。。

利用网络爬虫爬取中国天气网某个城市近7天的天气【Python】 继上一篇爬取豆瓣电影top250之后,这篇博客还是利用requests库和BeautifulSoup进行网络爬虫的练习,这次爬取的对象是中国天气网。 说明 1.用到的库:requests,BeautifulSoup,re。其中,requests库用于获取网页内容,BeautifulSoup用于网页解析,re正则表达式库用于对爬取内容进行匹配和搜索。 2.正常情况下BeautifulSoup就可... 阅读详情

相关推荐

将欲取天下而为之,吾见其不得已,SAP BTP 开发里的无为架构与有度创新

本文以《道德经》第29章"天下神器,不可为也"为引,探讨企业级软件开发中的克制之道。作者指出,SAP BTP平台虽功能强大,但开发者需避免过度作为的冲动:在系统扩展上应遵循Clean Core原则,优先使用标准配置而非深度定制;在应用开发中要善用CAP框架和ABAP Cloud的边界约束;在集成层面需区分不同通信模式而非强制统一;数据治理要避免全量复制陷阱。文章强调,真正的架构智慧不在于掌控所有,而在于精准判断"何事不可为",这与老子"去甚、去奢、去泰"的哲学思想高度契合。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 6799

网页报错代码

网页报错代码

u013233664的博客 1万+

【100天精通python】Day41:python网络爬虫开发_爬虫基础入门

网络爬虫(Web Crawler),是一种自动化程序,用于在互联网上浏览和抓取信息。爬虫可以遍历网页,收集数据,提取信息,以便于进一步处理和分析。网络爬虫在搜索引擎、数据采集、信息监测等领域发挥着重要作用。1.1 工作原理初始URL选择: 爬虫从一个或多个初始URL开始,这些URL通常是你希望开始爬取的网站的主页或其他页面。发送HTTP请求: 对于每个初始URL,爬虫会发送HTTP请求以获取网页内容。

qq_35831906的博客 6669

HTTP常见状态码介绍

转自:https://www.cnblogs.com/sharesdk/p/9310004.html 一、HTTP概述 HTTP 是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。 一个HTTP "客户端"是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。 一个HTTP "服务器"同样也是一个应用程序(通常是一个Web服务,如Apache Web服务器或IIS服务器等),通过接收客户端的.

不怕死的假老练 5166

晶体管的 栅极gate 材料选用 多晶硅polysilicon,并采用 自对准工艺 self-aligned IC后端版图 【VLSI】

本文为了解决为什么要使用多晶硅作栅极触点的问题,先介绍了MOS管的工作原理是通过栅极上所加的电压控制漏极与源极之间电流,然后解释了栅极的材料为什么选用多晶硅,然后介绍了晶体管里栅极的自对准工艺(Self-Aligned Gate )。

Jie_MSD的博客 1万+

SEMI E40标准的加工任务状态模型(Process Job State Model)解析

半导体制造设备的自动化控制离不开对加工任务(Process Job)的精细管理。SEMI E40标准定义了加工任务的全生命周期状态模型。分层建模,支持嵌套与并发子状态,确保复杂流程的灵活控制。SEMI E40通过。

bengg123的博客 1774

HTTP 状态码

HTTP Status Codes https://httpstatuses.com/ 此网站有完整的列表和详尽的说明: 1×× Informational 100 Continue 101 Switching Protocols 102 Processing 2×× Success 200 OK 201 Created 202 Accepted 203 Non-authoritative Information 204 No Content 205 Reset Content 206 Partial C

学习笔记 434

Android-S无线模块前瞻

WiFi - mainlane非强制 S 采用反射的方法直接加载wifiservice,直接hook在systemserver上,无编译依赖。gms可以动态替换wifi服务。 R 采用直接启动service的方式,wifiservice仍然map在systemserver上。 WiFi - 11ad接口支持 11ad被wifi联盟商业化为WIGIG,提供短距的60GHZ载波,理论速度为当前5G 11ac的6倍。市面上基本没有手机支持,需要独立的芯片支撑此功能。 传输距离为3m以内,外界d.

头铁的伦的博客 1044

HTTP 421 错误

421 错误

weixin_41111116的博客 1万+

交通小白首投TRB就中Oral?我的完整时间线与避坑指南(附Editorial Manager实操截图)

本文详细解析了交通领域新手如何高效完成TRB国际会议投稿的全流程,从选题策略到投稿系统实操,再到评审过程解析和常见误区避坑指南。特别针对初次投稿者提供了实用建议,包括时间规划、选题考量、Editorial Manager系统操作技巧,以及如何应对评审意见。文章还分享了从录用到会议参与的关键步骤,帮助研究者提升投稿成功率。

weixin_27303545的博客 387

HP SPP download

是一个全面的系统软件和固件更新解决方案,以单个ISO映像的形式提供。该解决方案使用智能更新管理器(SUM)作为部署工具。

极致,细节 9860

每天30分钟 一起来学习爬虫——day8(requests库的cookie,ssl认证和代理,实例:人人网模拟登录)

文章目录代理ssl 认证代理 代理 代理的相关理论在前面已将说过了,这次直接看用requests 来设置代理 import requests url = 'https://www.baidu.com/s?wd=ip&ie=UTF-8' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWe...

weixin_45691686的博客 1283

Matlab之App Designer 如何进行三维图形绘制教程

基于Matlab中的App Designer设计可视化界面并进行数据导入及3D绘图,可以直观的在可视化界面上展示分析结果,方便用户进行图形的操作。本文采用案例讲解的方式,详细介绍了如何采用Matlab App Designer建立数据3D绘图的GUI可视化界面的方法和详细的过程步骤,并介绍了导入数据进行计算时需要注意的相关事项,同时提供了详细的代码,以便读者进行学习和操作。

m0_59012156的博客 2066

每天30分钟 一起来学习爬虫——day7(requests 库的get和post请求)

requests 库 什么是requests 官方文档:http://cn.python-requests.org/zh_CN/latest requests 是 urllib的一个封装 优点: 简单易用 url自动转义 支持python2 python3 ,而且名字一样,无缝对接 下面我们来使用一下 首先 安装requests库,pip install requests 这里说一下,如果安装...

weixin_45691686的博客 356

勇攀数字高峰

摘要:该题目要求在数字地形图中寻找从最低点到最高点的所有严格递增登山路径。采用DFS深度优先搜索结合回溯算法,通过标记已访问位置并检查高度差限制(0<diff≤maxDiff)来遍历所有可能路径。算法首先确定起点(最低点)和终点(最高点),然后进行DFS搜索,每步移动需满足四个方向的合法移动且高度严格递增。最终输出符合条件的路径总数。提供了C++、Java和Python三种实现方案。

面试高手的博客 622

“探索thumbdata4文件的奥秘:编程中的神秘存在“

综上所述,thumbdata4文件在编程中是一个常见的存在,与图库应用程序和图片浏览器密切相关。通过使用适当的库和工具,我们可以读取和处理thumbdata4文件中的缩略图数据,以提供更好的用户体验。我们首先读取8字节的块头,其中包含了下一个缩略图块的大小。你可以根据自己的需求来定义对块数据的处理方式,例如将其保存为图像文件或进行其他的分析操作。thumbdata4文件通常以二进制格式存储,其中包含着设备上浏览过的图片的缩略图。因此,你可能需要根据具体的thumbdata4文件结构进行适当的解析和处理。

JieLun_C的博客 792

python日记Day20——网络爬虫之requests库

python日记——网络爬虫之requests库 网络爬虫与信息提取流程图 HTTP协议 1、HTTP,Hypertext Transfer Protocol,超文本传输协议,HTTP是一个基于“请求与响应”模式的、无状态的应用层协议,HTTP协议采用URL作为定位网络资源的标识,URL格式如下:http://host[:port][path] host: 合法的Internet主机域名或IP...

weixin_43872109的博客 686

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

网络爬虫day02

王伟超 wangweichao@tedu.cn DAY01 网络爬虫概述 定义 网络蜘蛛、网络机器人,抓取网络数据的程序 其实就是用Python程序模仿人点击浏览器并访问网站,而且模仿的越像越好,让Web站点无法发现你不是人 爬取数据目的 1、公司项目测试数据 2、公司业务部门及其他部门所需数据 3、数据分析 企业获取数据方式 1、公司自有数据 2、第三方数据平台购买(...

纸鸢栀年°的博客 2433

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Python 爬虫的学习 day01 ,爬虫的基本知识, requests 和 charde模块, get函数的使用

1.Python 爬虫 2. post 请求 和 get 请求 3. url 的组成和意义 4. requests 和 chardet 的功能 (模块需要下载) 5. requests 和 charde 模块 函数的使用

she666666的博客 1218

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

社团课Day1-网络爬虫介绍/Requests库的使用

爬虫 1.什么是爬虫 通俗解释 : 通过Python(爬虫代码), 下载互联网上的数据到本地, 并且提取出我们需要的信息的过程就是就是爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,或者经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。二十年前是一种黑客行为 分类 普通爬虫、多线程爬虫、异布爬虫 企业/对大型网站:Scrapy框架、Celery分布式 还可以学习到:计算机网络、面向对象 Web与HTTP协议介绍 超文本传输协议(Hypertext Tra

ZYJ_OvO的博客 927

网络爬虫Day1

一、互联网、HTTP 1、互联网 互联网也叫因特网(Internet),是指网络与网络所串联成的庞大网络,这些网络以一组标准的网络协议族相连,连接全世界几十亿个设备,形成逻辑上的单一巨大国际网络。它由从地方到全球范围内几百万个私人的、学术界的、企业的和政府的网络所构成。通过电子、无线和光纤等一系列广泛的技术来实现。这种将计算机网络互相连接在一起的方法可称作“网络互联”,在此基础上发展出来的覆盖全世...

qq_39807547的博客 594

爬虫&逆向--Day02--Requests

什么是爬虫?爬虫程序是需要充当B/S或者C/S架构中的客户端。爬虫程序需要模拟客户端进行请求发送,然后获取服务器端对应的相关数据。在B/S架构中爬虫程序模拟的就是浏览器。提问:如果日后你的爬虫程序没有爬取到你想要的数据,why?爬虫程序模拟浏览器的力度不够。爬虫在应用场景的分类?通用爬虫:可以将一个页面中所有的数据都爬取到。聚焦爬虫:建立在通用爬虫基础之上。可以将一张页面中局部、指定的数据进行抓取增量式爬虫:可以监测网站数据更新的情况。以便将最新更新出来的数据进行抓取。

废弃的小码农 2315

Python网络爬虫-requests库学习笔记

python网络爬虫与信息提取,requests库以及爬虫实例

YSF_BEST的博客 543

三、Requests库网络爬虫实战(学习笔记)

Requests库网络爬虫实战(学习笔记) 一、实例1:京东商品页面的爬取 1.获取某商品的信息 商品连接:https://item.jd.com/2967929.html 工具:IDLE 过程: >>>import requests # 加载requests库 >>>r = requests.get("https://item.jd.com/2967929.html") # 通过get方法获取链接内容 >>>r.status_code # 观察返回的状

Shangyejingwu的博客 1321

DAY15:Python网络爬虫之规则

#题目来自北航嵩天老师mooc作业,笔记主要用于复习所用

weixin_44537551的博客 235

从零开始的python爬虫教程(Day02)

爬虫的概念以及requests库的基础

12218的博客 759
上一篇: Day29.爬虫基础之Urllib
下一篇: Day31.爬虫基础之re
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值