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 相关文章推荐
通过C++学习Python
Jan 20 Python
Python在Windows和在Linux下调用动态链接库的教程
Aug 18 Python
利用Python实现在同一网络中的本地文件共享方法
Jun 04 Python
Python Pexpect库的简单使用方法
Jan 29 Python
numpy数组之存取文件的实现示例
May 24 Python
python之当你发现QTimer不能用时的解决方法
Jun 21 Python
Python操作多维数组输出和矩阵运算示例
Nov 28 Python
Python3 pickle对象串行化代码实例解析
Mar 23 Python
Python类super()及私有属性原理解析
Jun 15 Python
PyCharm上安装Package的实现(以pandas为例)
Sep 18 Python
Python3.9.1中使用match方法详解
Feb 08 Python
在python中实现导入一个需要传参的模块
May 12 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中基本HTTP认证技巧分析
2015/03/16 PHP
thinkPHP导出csv文件及用表格输出excel的方法
2015/12/30 PHP
JQuery UI皮肤定制
2009/07/27 Javascript
JavaScript 面向对象的 私有成员和公开成员
2010/05/13 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
2013/12/30 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
javascript实现博客园页面右下角返回顶部按钮
2015/02/22 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
JS实现三个层重叠点击互相切换的方法
2015/10/06 Javascript
jQuery中hover与mouseover和mouseout的区别分析
2015/12/24 Javascript
node.js 抓取代理ip实例代码
2017/04/30 Javascript
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
Weex开发之地图篇的具体使用
2019/10/16 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
解决vue-router路由拦截造成死循环问题
2020/08/05 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
python 系统调用的实例详解
2017/07/11 Python
聊聊Python中的pypy
2018/01/12 Python
Random 在 Python 中的使用方法
2018/08/09 Python
python将txt文件读入为np.array的方法
2018/10/30 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
详解Python静态网页爬取获取高清壁纸
2019/04/23 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
在pycharm中显示python画的图方法
2019/08/31 Python
解决Pycharm 导入其他文件夹源码的2种方法
2020/02/12 Python
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
英国家庭珠宝商:T. H. Baker
2018/02/08 全球购物
巴西一家专门从事家居和装饰的连锁店:Camicado
2019/08/14 全球购物
夏季奶茶店创业计划书
2014/01/16 职场文书
党员入党表决心的话
2014/03/11 职场文书
新教师个人总结
2015/02/06 职场文书
2015年教师节感言
2015/08/03 职场文书
python通过新建环境安装tfx的问题
2022/05/20 Python