介绍
使用请求库怎么实现一个python爬虫?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
请求库
利用脉冲安装:
<代码> pip安装请求代码>
基本请求
req =, requests.get (“https://www.baidu.com/") 时间=req requests.post (“https://www.baidu.com/") 时间=req requests.put (“https://www.baidu.com/") 时间=req requests.delete (“https://www.baidu.com/") 时间=req requests.head (“https://www.baidu.com/") 时间=req requests.options (https://www.baidu.com/)
1.得到请求
参数是字典,我们可以传递json类型的参数:
import 请求 得到fake_useragent import  UserAgent #请求头部库 headers =, {“User-Agent": UserAgent () .random} #获取一个随机的请求头 时间=url “https://www.baidu.com/s" #网址 params={ “wd"才能:“豆瓣“,,#网址的后缀 } requests.get (url,头=头,params=params)
返回了状态码,所以我们要想获取内容,需要将其转成文本:
#得到请求 headers =, {“User-Agent": UserAgent () .random} 时间=url “https://www.baidu.com/s" params={ “wd"才能:“豆瓣“; } response =, requests.get (url,标题=头,params=参数) response.text
2。文章请求
参数也是字典,也可以传递json类型的参数:
import requests 得到fake_useragent import  UserAgent headers =, {“User-Agent": UserAgent () .random} 时间=url “https://www.baidu.cn/index/login/login", #登录账号密码的网址 params =, { “user"才能:“1351351335”,#账号 “password"才能:“123456“#密码 } response =, requests.post (url,标题=头,data=https://www.yisu.com/zixun/params) 响应。文本
因为这里需要一个登录的网页,我这里就随便用了一个,没有登录,所以显示的结果是这样的,如果想要测试登录的效果,请找一个登录的页面去尝试一下。
3。IP代理
采集时为避免被封IP,经常会使用代理,请求也有相应的代理属性。
# IP代理 import requests 得到fake_useragent import  UserAgent headers =, {“User-Agent": UserAgent () .random} 时间=url “http://httpbin.org/get", #返回当前IP的网址 proxies =, { “http"才能:“http://yonghuming: 123456 @192.168.1.1:8088" # http://用户名:密码@IP:端口号 #才能“http":“https://182.145.31.211:4224" #,或者IP:端口号 } requests.get (url,头=头,代理=代理)
代理IP可以去:快代理去找,也可以去购买。
<强> http://httpbin.org/get 强>。这个网址是查看你现在的信息:
4。设置访问超时时间
可以通过超时属性设置超时时间,一旦超过这个时间还没获取到响应内容,就会提示错误。
#设置访问时间 requests.get (“http://baidu.com/",超时=0.1)
5。证书问题(SSLError: HTTP)
ssl验证。
import requests 得到fake_useragent import  UserAgent #请求头部库 时间=url “https://www.12306.cn/index/", #需要证书的网页地址 headers =, {“User-Agent": UserAgent () .random} #获取一个随机请求头 requests.packages.urllib3.disable_warnings() #禁用安全警告 时间=response requests.get (url,验证=False,头=标题) 时间=response.encoding “utf-8", #用来显示中文,进行转码 响应。文本