python爬虫入门:工具及requests库介绍

python ide介绍

文本类

  • idle
  • sublime text

集成工具

  • wing
  • vs
  • eclipsepy
  • pyCharm -集成度最高

科学技术,数据分析工具

  • canopy
  • Anaconda

website is the API

requests库

最简单的爬虫库,且支持python3

安装

pip install requests
Looking in indexes: https://pypi.douban.com/simple
Collecting requests
  Downloading https://pypi.doubanio.com/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl (57kB)
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests)
  Downloading https://pypi.doubanio.com/packages/e6/60/247f23a7121ae632d62811ba7f273d0e58972d75e58a94d329d51550a47d/urllib3-1.25.3-py2.py3-none-any.whl (150kB)
Collecting idna<2.9,>=2.5 (from requests)
  Downloading https://pypi.doubanio.com/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl (58kB)
Collecting chardet<3.1.0,>=3.0.2 (from requests)
  Downloading https://pypi.doubanio.com/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
Collecting certifi>=2017.4.17 (from requests)
  Downloading https://pypi.doubanio.com/packages/69/1b/b853c7a9d4f6a6d00749e94eb6f3a041e342a885b87340b79c1ef73e3a78/certifi-2019.6.16-py2.py3-none-any.whl (157kB)
Installing collected packages: urllib3, idna, chardet, certifi, requests
Successfully installed certifi-2019.6.16 chardet-3.0.4 idna-2.8 requests-2.22.0 urllib3-1.25.3
Note: you may need to restart the kernel to use updated packages.

检测是否安装成功

import requests
r = requests.get('http://www.baidu.com')
r.status_code #返回状态码为200 证明成功
200
r.encoding='utf-8'
r.text
'\r\n 百度一下,你就知道  

关于百度 About Baidu

©2017 Baidu 使用百度前必读  意见反馈 京ICP证030173号 

\r\n'

成功获得百度页面

requests.get(url)

获得url的response对象

r = requests.get("http:www.baidu.com")
type(r) #rs response对象
requests.models.Response

response对象的属性

r.status_code#http请求的返回状态码
200
r.text#http响应的字符串 队友的页面内容
'\r\n 百度一下,你就知道  

关于百度 About Baidu

©2017 Baidu 使用百度前必读  意见反馈 京ICP证030173号 

\r\n'
r.encoding#http header中猜测内容编码方式
'utf-8'
r.apparent_encoding #备选编码方式
'utf-8'
r.content #http响应内容的二进制形式
b'\r\n \xe7\x99\xbe\xe5\xba\xa6\xe4\xb8\x80\xe4\xb8\x8b\xef\xbc\x8c\xe4\xbd\xa0\xe5\xb0\xb1\xe7\x9f\xa5\xe9\x81\x93  
\r\n'
#get方法获取流程
r.status_code
'''
状态码为200
'''
r.text
'''
从而进行其它处理
'''
'\n从而进行其它处理\n'

r.encoding 是头文件的猜测编码,如果不对应该使用 r.apparent_encoding来得到文本编码

网页爬取通用代码

#Requests的异常
requests.ConnectionError #网络异常
requests.HTTPError #http错误
requests.URLRequired #url没有
requests.TooManyRedirects #超过最大重定向次数
requests.ConnectTimeout #连接远程服务器超时异常
requests.Timeout #请求url超时
requests.exceptions.Timeout
r.raise_for_status() # 如果状态不是200,引发异常
import requests 

def getHtmlText(url):
    try:
        r = requests.get(url) #发起请求,并获得响应
        r.raise_for_status() #判断状态
        r.endcoding = r,apparent_encoding
        return r.text
    except:
        return "没有连接成功"
n = "http://www.baidu.com"
print(getHtmlText(n))
没有连接成功

http 协议

url格式: http://host[:port][path]
host :服务器域名
:port:端口 默认 80
path:请求资源地址

patch put的区别

patch 仅限修改所带提交的内容
put 地址所有内容改为修改内容,讲原有数据覆盖

reuqests.reuqests(method,url,**kwargs)

method:请求方式 对应 put post 等7种
url:页面连接
**kwarg:控制访问的参数,共13个

#params
#data
#json
#headers

hd ={
‘user-agent’ :‘chrome/10’
}
r =requests.request(‘POST’,‘http://python123.io/ws’,headers = hd)
r


#cookies:
#auth
#files:字典
fs ={'file':open('xx.xls','rb')}
r=requests.request("POST",'http://python123.io/ws',files #timeout ::超时
# proxies: 增加代理服务器
#allow_redirect:默认ture课重定向
#stream

## requests.get(url,params,**kwargs)
##head(url)
## post(url,data,json,**kwargs)
## put(url,**kwargs)
## patch(url,**kwargs)
##delete(url,**kwargs)

你可能感兴趣的:(python爬虫入门笔记,python,python爬虫,入门)