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 ljust rjust center输出
Sep 06 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
Jun 16 Python
Python 多进程和数据传递的理解
Oct 09 Python
对python3 一组数值的归一化处理方法详解
Jul 11 Python
Python中__slots__属性介绍与基本使用方法
Sep 05 Python
在unittest中使用 logging 模块记录测试数据的方法
Nov 30 Python
python实现手机销售管理系统
Mar 19 Python
python之yield和Generator深入解析
Sep 18 Python
Python 线程池用法简单示例
Oct 02 Python
使用python处理题库表格并转化为word形式的实现
Apr 14 Python
在Python中字典按值排序的实现方法
Nov 12 Python
基于Python实现流星雨效果的绘制
Mar 18 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
根德YB400的电路分析
2021/03/02 无线电
php中常用编辑器推荐
2007/01/02 PHP
深入php中var_dump方法的使用详解
2013/06/24 PHP
php中this关键字用法分析
2016/12/07 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
PHP goto语句用法实例
2019/08/06 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
JavaScript 学习技巧
2010/02/17 Javascript
WEB高性能开发之疯狂的HTML压缩
2010/06/19 Javascript
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
js中if语句的几种优化代码写法
2011/03/12 Javascript
js中设置元素class的三种方法小结
2011/08/28 Javascript
JS正则表达式验证数字代码
2014/01/28 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
前端 Vue.js 和 MVVM 详细介绍
2016/12/29 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
2017/02/13 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
2017/09/14 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
electron 如何将任意资源打包的方法步骤
2020/04/16 Javascript
用Python的Django框架完成视频处理任务的教程
2015/04/02 Python
python监控文件或目录变化
2016/06/07 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
Django中的ajax请求
2018/10/19 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
2020/07/03 Python
意大利制造的西装、衬衫和针对男士量身定制的服装:Lanieri
2018/04/08 全球购物
广告设计专业自荐信范文
2013/11/14 职场文书
医院总经理职责
2013/12/26 职场文书
会计与审计毕业生自荐信范文
2013/12/30 职场文书
机关党建工作汇报材料
2014/08/20 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
股东出资证明书范例
2014/10/04 职场文书
2015秋季田径运动会广播稿
2015/08/19 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
Java Socket实现Redis客户端的详细说明
2021/05/26 Redis
redis缓存存储Session原理机制
2021/11/20 Redis