Python爬虫工具requests-html使用解析


Posted in Python onApril 29, 2020

使用Python开发的同学一定听说过Requsts库,它是一个用于发送HTTP请求的测试。如比我们用Python做基于HTTP协议的接口测试,那么一定会首选Requsts,因为它即简单又强大。现在作者Kenneth Reitz 又开发了requests-html 用于做爬虫。

该项目从3月上线到现在已经7K+的star了!

GiHub项目地址:

https://github.com/kennethreitz/requests-html

requests-html 是基于现有的框架 PyQuery、Requests、lxml、beautifulsoup4等库进行了二次封装,作者将Requests设计的简单强大的优点带到了该项目中。

安装:

 pip install requests-html

教程与使用:

使用GET请求 https://python.org 网站。

先来看看requests的基本使用。

from requests_html import HTMLSession
session = HTMLSession()

r = session.get('https://python.org/')

# 获取页面上的所有链接。
all_links = r.html.links
print(all_links)

# 获取页面上的所有链接,以绝对路径的方式。
all_absolute_links = r.html.absolute_links
print(all_absolute_links)

作为一个IT技术人员,是不是要时时关心一下科技圈的新闻,上博客园新闻频道,抓取最新的推荐新闻。

from requests_html import HTMLSession
session = HTMLSession()
r = session.get("https://news.cnblogs.com/n/recommend")
# 通过CSS找到新闻标签
news = r.html.find('h2.news_entry > a')
for new in news:
  print(new.text) # 获得新闻标题
  print(new.absolute_links) # 获得新闻链接

执行结果:

雷军:小米硬件综合净利率永远不超5%!
{'https://news.cnblogs.com/n/595156/'}
苦大仇深的“中国芯”,不妨学一学有趣的树莓派
{'https://news.cnblogs.com/n/595143/'}
我的快递,凭什么不能给我送到家!
{'https://news.cnblogs.com/n/595087/'}
倪光南回应方舟CPU失败论:企业失败不等于技术失败
{'https://news.cnblogs.com/n/595102/'}
清华大学突破纪录:首次实现25个量子接口间量子纠缠
{'https://news.cnblogs.com/n/595103/'}
定向免流量套餐用着爽,但背后的“坑”你可能不知道
{'https://news.cnblogs.com/n/595061/'}
你在微信群侃大山,有人却用微信群发大财
{'https://news.cnblogs.com/n/595059/'}
马云的三观
{'https://news.cnblogs.com/n/595047/'}
美国科技强大的全部秘密
{'https://news.cnblogs.com/n/595043/'}
盖茨看着听证会上的扎克伯格:满眼都是20年前的自己
{'https://news.cnblogs.com/n/595025/'}
史上最清晰癌细胞转移3D影像来袭
{'https://news.cnblogs.com/n/595019/'}
中兴员工:华为仅部分芯片自己设计 谁被美制裁都得死
{'https://news.cnblogs.com/n/594967/'}
作为曾经的华为员工,我想替中兴公司说两句公道话
{'https://news.cnblogs.com/n/594962/'}
匿名网友回评梁宁:方舟bug无数 贴钱给别人都未必用
{'https://news.cnblogs.com/n/594932/'}
一段关于国产芯片和操作系统的往事
{'https://news.cnblogs.com/n/594900/'}
芯片股总市值低于美国巨头 有公司靠政府补助盈利
{'https://news.cnblogs.com/n/594902/'}
被自家律师送上“枪口”的“二流”中兴
{'https://news.cnblogs.com/n/594859/'}
Google正在失去DeepMind?
{'https://news.cnblogs.com/n/594853/'}

扩展:我们可以进一步将这里数据做持久化处理,设计出自己的“头条”。

接下来我们到网站上下载壁纸,以美桌网(www.win4000.com)为例。

from requests_html import HTMLSession
import requests


# 保存图片到bg/目录
def save_image(url, title):
  img_response = requests.get(url)
  with open('./bg/'+title+'.jpg', 'wb') as file:
    file.write(img_response.content)

# 背景图片地址,这里选择1920*1080的背景图片
url = "http://www.win4000.com/wallpaper_2358_0_10_1.html"

session = HTMLSession()
r = session.get(url)

# 查找页面中背景图,找到链接,访问查看大图,并获取大图地址
items_img = r.html.find('ul.clearfix > li > a')
for img in items_img:
  img_url = img.attrs['href']
  if "/wallpaper_detail" in img_url:
    r = session.get(img_url)
    item_img = r.html.find('img.pic-large', first=True)
    url = item_img.attrs['src']
    title = item_img.attrs['title']
    print(url+title)
    save_image(url, title)

这个网站上的图片还是很容易获取的,在上面的代码块中我加了注释。这里不再说明。

Python爬虫工具requests-html使用解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python解释执行原理分析
Aug 22 Python
python中实现php的var_dump函数功能
Jan 21 Python
python3 与python2 异常处理的区别与联系
Jun 19 Python
Python守护线程用法实例
Jun 23 Python
python使用fork实现守护进程的方法
Nov 16 Python
使用python进行文本预处理和提取特征的实例
Jun 05 Python
Python3 filecmp模块测试比较文件原理解析
Mar 23 Python
Python实现Word表格转成Excel表格的示例代码
Apr 16 Python
Django如何使用redis作为缓存
May 21 Python
python 读取.nii格式图像实例
Jul 01 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
Jul 07 Python
python递归函数用法详解
Oct 26 Python
Python基于Hypothesis测试库生成测试数据
Apr 29 #Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
Apr 29 #Python
Python通过两个dataframe用for循环求笛卡尔积
Apr 29 #Python
Django分组聚合查询实例分享
Apr 29 #Python
python中sympy库求常微分方程的用法
Apr 28 #Python
tensorflow2.0的函数签名与图结构(推荐)
Apr 28 #Python
Python startswith()和endswith() 方法原理解析
Apr 28 #Python
You might like
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
js格式化时间小结
2014/11/03 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
js中的面向对象入门
2017/03/06 Javascript
详解Weex基于Vue2.0开发模板搭建
2017/03/20 Javascript
Angular中响应式表单的三种更新值方法详析
2017/08/22 Javascript
JavaScript实现图片拖曳效果
2017/09/08 Javascript
JS实现的全选、全不选及反选功能【案例】
2019/02/19 Javascript
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
pyqt4教程之widget使用示例分享
2014/03/07 Python
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
浅析Python中的join()方法的使用
2015/05/19 Python
Python Property属性的2种用法
2015/06/21 Python
python实现弹窗祝福效果
2019/04/07 Python
Python split() 函数拆分字符串将字符串转化为列的方法
2019/07/16 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
2019/10/11 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
python用700行代码实现http客户端
2021/01/14 Python
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
雅高酒店中国:Accorhotels.com China
2018/03/26 全球购物
莫斯科购买书籍网站:Book24
2020/01/12 全球购物
巴西最大的巴士票务门户:Quero Passagem
2020/11/21 全球购物
电大物流学生的自我评价
2013/10/25 职场文书
医药专业推荐信
2013/11/15 职场文书
医药营销个人求职信范文
2014/02/07 职场文书
HR求职自荐信范文
2014/06/21 职场文书
国际经济与贸易专业求职信
2014/07/10 职场文书
捐资助学感谢信
2015/01/21 职场文书
公文写作:新员工转正申请书范本3篇!
2019/08/07 职场文书
导游词之西安骊山
2019/12/03 职场文书
div与span之间的区别与使用介绍
2021/12/06 HTML / CSS