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数字图像处理实现直方图与均衡化
May 04 Python
python如何爬取个性签名
Jun 19 Python
Tornado Web Server框架编写简易Python服务器
Jul 28 Python
使用Python写一个量化股票提醒系统
Aug 22 Python
Python标准库使用OrderedDict类的实例讲解
Feb 14 Python
Python同步遍历多个列表的示例
Feb 19 Python
python 字典 setdefault()和get()方法比较详解
Aug 07 Python
Python 3.6打包成EXE可执行程序的实现
Oct 18 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
Dec 18 Python
Tensorflow累加的实现案例
Feb 05 Python
keras使用Sequence类调用大规模数据集进行训练的实现
Jun 22 Python
python模块与C和C++动态库相互调用实现过程示例
Nov 02 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中如何使用session实现保存用户登录信息
2015/10/20 PHP
搭建自己的PHP MVC框架详解
2017/08/16 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
解决laravel session失效的问题
2019/10/14 PHP
javascript处理table表格的代码
2010/12/06 Javascript
解析js如何获取当前url中的参数值并复制给input
2013/06/23 Javascript
理解Javascript闭包
2013/11/01 Javascript
JavaScript简单实现鼠标拖动选择功能
2014/03/06 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
老生常谈JavaScript面向对象基础与this指向问题
2017/10/16 Javascript
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
2018/04/21 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
Python中逗号的三种作用实例分析
2015/06/08 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
PyQt5显示GIF图片的方法
2019/06/17 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
Django实现发送邮件找回密码功能
2019/08/12 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
python 列表、字典和集合的添加和删除操作
2019/12/16 Python
Django实现后台上传并显示图片功能
2020/05/29 Python
俄罗斯运动、健康和美容产品在线商店:Lactomin.ru
2020/07/23 全球购物
个人找工作自荐信格式
2013/09/21 职场文书
护理自荐信范文
2013/10/05 职场文书
运动会横幅标语
2014/06/17 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
小学生毕业评语
2014/12/26 职场文书
2015年事业单位工作总结
2015/04/27 职场文书
酒店宣传语大全
2015/07/13 职场文书
秋季运动会加油词
2015/07/18 职场文书
教你用python控制安卓手机
2021/05/13 Python
python中redis包操作数据库的教程
2022/04/19 Python
Python find()、rfind()方法及作用
2022/12/24 Python