爬虫之requests库
程序员文章站
2022-07-05 18:39:25
想用selenium实现B站自动登录以及点赞等功能,便查阅如何解决滑动解锁,然而是有关爬虫的内容,便开始学习爬虫,没过多久又想把记录自己生活的网站做起来,朋友便推荐了layui框架倒腾了一晚上自我觉得是做给后端程序员入门的框架,Vue又感觉太难,便开始搞bootstrap,没搞出个所以然来。因为闲着 ......
想用selenium实现b站自动登录以及点赞等功能,便查阅如何解决滑动解锁,然而是有关爬虫的内容,便开始学习爬虫,没过多久又想把记录自己生活的网站做起来,朋友便推荐了layui框架倒腾了一晚上自我觉得是做给后端程序员入门的框架,vue又感觉太难,便开始搞bootstrap,没搞出个所以然来。因为闲着心情烦躁便开始重新学习爬虫。每次写点文章总是碎碎念一段,有人在评论去区说我矫情,是真的。
安装:pip install requests
http请求返回response对象属性
编码问题
import requests
r=requests.get('http://www.baidu.com/')
r.encoding='gbk' 或 r.encoding=r.apparent_encoding
#百度返回的页面内容为iso-8859-1编码的,如果不设置成gbk则乱码
print(response.text)
requests的库异常处理
requests库的主要方法
1 import requests 2 r = requests.get('https://www.cnblogs.com/') 3 r = requests.head('http://httpbin.org/get') 4 r = requests.post('http://httpbin.org/post',key='value') 5 r = requests.put('http://httpbin.org/put',key='value') 6 r = requests.patch('http://httpbin.org/patch',key='value') 7 r = requests.options('http://httpbin.org/get') 8 r = requests.delete('http://httpbin.org/delete')
爬取网页通用框架
1 import requests 2 def get_html(url): 3 try: 4 r = requests.get(url,timeout=30) 5 r.raise_for_status() 6 r.encoding=r.apparent_encoding 7 return r.text 8 except: 9 return "产生异常" 10 11 if __name__=="__main__": 12 url = "http://www.baidu.com" 13 print(get_html(url))
几个小案例
案例一 京东商品爬取 import requests url = 'https://item.jd.com/100010131982.html' try: r = requests.get(url) r.raise_for_status() r.encoding=r.apparent_encoding print(r.text[:1000]) #1000代表截取前1000个字符 except: print("爬取失败") 案例二 亚马逊 import requests url = 'https://www.amazon.cn/dp/b08531c6pv/ref=s9_acsd_hps_bw_c2_x_1_i?pf_rd_m=a1u5rcovu0nyf2&pf_rd_s=merchandised-search-top-3&pf_rd_r=xxhrt6r61zyza5fgmpkj&pf_rd_t=101&pf_rd_p=b2e55b79-7940-4444-967a-6dbe6d7cb574&pf_rd_i=1935403071' try: kv = {'user-agent':'mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/79.0.3945.117 safari/537.36'} #模拟浏览器 r= requests.get(url,headers = kv) r.raise_for_status() r.encoding=r.apparent_encoding print(r.text[1000:2000]) except: print("爬取失败") 案例三 百度 import requests kv = {'wd':'python'} r = requests.get('http://www.baidu.com/s',params=kv) print(r.requests.url) print(len(r.text))
等学到新的就来更新,我记得刚学的时候我就开始爬贴吧了,现在老老实实看基础了
未完待续!