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获得两个数组交集、并集、差集的方法
Mar 27 Python
python模拟enum枚举类型的方法小结
Apr 30 Python
Python 自动刷博客浏览量实例代码
Jun 14 Python
Python日期的加减等操作的示例
Aug 15 Python
python 实现tar文件压缩解压的实例详解
Aug 20 Python
机器学习经典算法-logistic回归代码详解
Dec 22 Python
Python设计模式之适配器模式原理与用法详解
Jan 15 Python
浅析Python3中的对象垃圾收集机制
Jun 06 Python
matlab中imadjust函数的作用及应用举例
Feb 27 Python
详解Python中string模块除去Str还剩下什么
Nov 30 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
Dec 18 Python
python利用xpath爬取网上数据并存储到django模型中
Feb 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
晶体管来复再生式二管收音机
2021/03/02 无线电
浅析PHP水印技术
2007/02/14 PHP
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
2015/12/09 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
2012/08/14 Javascript
jquery 页面滚动到底部自动加载插件集合
2014/01/31 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
2014/05/09 Javascript
js的toLowerCase方法用法实例
2015/01/27 Javascript
Underscore.js常用方法总结
2015/02/28 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
2016/01/17 Javascript
JS排序算法之希尔排序与快速排序实现方法
2017/12/12 Javascript
JS中touchstart事件与click事件冲突的解决方法
2018/03/12 Javascript
微信小程序下拉刷新PullDownRefresh的使用方法
2018/11/29 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
Django框架中render_to_response()函数的使用方法
2015/07/16 Python
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
Python算法之图的遍历
2017/11/16 Python
pandas修改DataFrame列名的方法
2018/04/08 Python
python+selenium select下拉选择框定位处理方法
2019/08/24 Python
jenkins+python自动化测试持续集成教程
2020/05/12 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
python wsgiref源码解析
2021/02/06 Python
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
德购商城:德国进口直邮商城
2017/06/13 全球购物
Discard Protocol抛弃协议的作用是什么
2015/10/10 面试题
用C#语言写出在本地创建一个UDP接收端口的具体过程
2016/02/22 面试题
城市轨道专业个人求职信范文
2013/09/23 职场文书
十佳美德少年事迹材料
2014/02/05 职场文书
应届生自荐书
2014/06/23 职场文书
护士个人总结范文
2015/02/13 职场文书
大学校园招聘会感想
2015/08/10 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
财务年终工作总结大全
2019/06/20 职场文书