requests
.
get
(
url
)
requests.exceptions.ConnectionError: ('Connection aborted.',
RemoteDisconnected('Remote end closed connection without response',))
服务器重启后可以正常返回,但是运行一段时间后依旧报错
报错后浏览器可以正常访问url
-
网上大多数解决方法是:
1.sleep一段时间
2.使用
UserAgent
import requests
url = 'https://www.ldoceonline.com/'
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36"}
r = requests.get(url,headers=headers)
-
但是尝试以上方法后并未解决
-
后续查找资料后用以下方式解决
import requests
r = requests.get(url=url, params={'param':'1'}, headers={'Connection':'close'})
详见
stackoverflow
场景在使用requests进行get请求时,由于请求比较频繁,导致报错 import requests while True: # do something requests.get(url)requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))服务器重启后可以正常返回,但是运行
网上说的什么只需要在请求头中加verify=False,完美解决的什么话,根本试了没用好吧,还有安装几个request辅助模块的方法,也试过了,没有用。。。首先这个error是时有时无的,所以我就想到了用多次循环来进行
requests
请求,然后做个异常处理不就行了吗,下面是具体操作:
这个是访问github的API的实例操作:
import
requests
requests
.packages.urllib3.disable_warnings()
#执行API调用并储存响应
url='https://api.github.com/search/repositories?q=language:
错误
:
requests
.exceptions.
Connection
Error: (‘
Connection
aborted.’,
Remote
Disconnected(‘
Remote
end
clo
sed
connection
without
response
’,))
(1)随机切换User-Agent:
user_agent_list = ["Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Geck
根据各位大神的解释是UA(User-Agent)出现问题了, headers = {'User-Agent': 'User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}
req = ...
在爬虫中报如下的
错误
:
requests
.exceptions.
Connection
Error: (‘
Connection
aborted.’,
Remote
Disconnected(‘
Remote
end
clo
sed
connection
without
response
’,))
(1)随机切换User-Agent:
user_agent_list = ["Mo...
requests
.exceptions.
Connection
Error:
('
Connection
aborted.',
Remote
Disconnected('
Remote
end
clo
sed
connection
without
response
',))
于是就抓包分析,发现只要加了’Accept-Language’就好了。。。
在爬虫中报如下的
错误
:
requests
.exceptions.
Connection
Error: (‘
Connection
aborted.’,
Remote
Disconnected(‘
Remote
end
clo
sed
connection
without
response
’,))
解决方法(1)随机切换User-Agent:
user_agent_list = [
"Mozilla/5.0 (Windows NT 10.0; WOW6
user_agent=[
“Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)”,
“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2....
安装urdfdom_headers
安装urdfdom_headers从conda-forge通道可以通过添加可以实现conda-forge到您的频道:
conda config --add channels conda-forge
启用urdfdom_headers conda-forge urdfdom_headers频道后,可以使用以下方法安装urdfdom_headers :
conda in
两种选型的比较
requests
,beautifulsoap,lxml都是程序
库
,爬虫需要自己实现;Scrapy是爬虫框架
Scrapy基于twisted,性能强大,内置功能丰富,而且易于扩展
Scrapy内置css和xpath选择器,比起beautifulsoap解析速度快
Scrapy太庞大,
requests
+lxml在处理一些小数据规模的爬取更灵活
爬虫程序编写流程
爬虫编写思路
应该先弄清楚要从网页中爬取些什么,然后存储什么
“种子”页面的分析,生成爬虫入口
页面结构分析,取出需要的数据
数据存储入
库
requests
库
requests
是用
python
编写的基于Apache2 licen
sed
许可证的HTTP
库
。在
python
内置模块的基础上进行了高度的封装,从而使得
python
进行网络请求时,变得人性化,使用
Requests
可以轻而易举的完
这篇文章主要介绍了
python
爬虫 基于
requests
模块的
get请求
实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
需求:爬取搜狗首页的页面数据
import
requests
# 1.指定url
url = 'https://www.sogou.com/'
# 2.发起
get请求
:get方法会返回请求成功的响应对象
response
=
requests
.get(url=url)
# 3.获取响应中的数据:text属性作用是可以获取响应对象中字符串形式的页面数据
page_data =
response
.text
# 4.持久化
import urllib.request
# 代码002:(未声明headers,会报错)
response
= urllib.request.urlopen("http://www.baidu.com")
print(
response
)
print(
response
.read())
运行结果:
Traceback (most recent call last):
File "D:/PycharmProjects/
python
Project/douban/test1/temp.py"
2. 构造请求参数
GET请求
一般不需要传递请求体,所以我们只需要构造请求URL即可。例如,请求一个API接口,URL为https://api.example.com/user?id=123,其中id为请求参数,可以通过如下代码构造:
```
python
url = 'https://api.example.com/user'
params = {'id': '123'}
3. 发送请求并获取响应
使用
requests
库
的get方法发送请求,返回的响应对象包含了服务器返回的所有信息,我们可以从中提取需要的数据。例如,获取响应的状态码、文本内容、JSON格式数据等,可以通过如下代码实现:
```
python
response
=
requests
.get(url, params=params)
status_code =
response
.status_code
content =
response
.text
json_data =
response
.json()
完整的示例代码如下:
```
python
import
requests
url = 'https://api.example.com/user'
params = {'id': '123'}
response
=
requests
.get(url, params=params)
status_code =
response
.status_code
content =
response
.text
json_data =
response
.json()
print(f'Status code: {status_code}')
print(f'Content: {content}')
print(f'JSON data: {json_data}')