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爬取亚马逊书籍信息代码分享
Dec 09 Python
快速解决安装python没有scripts文件夹的问题
Apr 03 Python
tensorflow更改变量的值实例
Jul 30 Python
numpy给array增加维度np.newaxis的实例
Nov 01 Python
Python 加密与解密小结
Dec 06 Python
Python闭包思想与用法浅析
Dec 27 Python
Django网络框架之HelloDjango项目创建教程
Jun 06 Python
使用python打印十行杨辉三角过程详解
Jul 10 Python
python自带tkinter库实现棋盘覆盖图形界面
Jul 17 Python
Python 爬虫实现增加播客访问量的方法实现
Oct 31 Python
基于python 取余问题(%)详解
Jun 03 Python
方法汇总:Python 安装第三方库常用
Apr 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实现的线索二叉树及二叉树遍历方法详解
2016/04/25 PHP
php实现留言板功能
2017/03/05 PHP
PHP基于自增数据如何生成不重复的随机数示例
2017/05/19 PHP
laravel中的一些简单实用功能
2018/11/03 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
Javascript弹出窗口的各种方法总结
2013/11/11 Javascript
被遗忘的javascript的slice() 方法
2015/04/20 Javascript
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
AngularJS压缩JS技巧分析
2016/11/08 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
2017/05/31 Javascript
详解从买域名到使用pm2部署node.js项目全过程
2018/03/07 Javascript
Element UI 自定义正则表达式验证方法
2018/09/04 Javascript
vue中将html字符串转换成html后遇到的问题小结
2018/12/10 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
2019/04/19 Javascript
js代码实现轮播图
2020/05/04 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
vue 计算属性和侦听器的使用小结
2021/01/25 Vue.js
使用Python编写一个最基础的代码解释器的要点解析
2016/07/12 Python
python如何在循环引用中管理内存
2018/03/20 Python
Python中Numpy包的安装与使用方法简明教程
2018/07/03 Python
python 自定义异常和异常捕捉的方法
2018/10/18 Python
戴尔美国官网:Dell
2016/08/31 全球购物
德国健康生活方式网上商店:Landkaufhaus Mayer
2019/03/12 全球购物
会计助理的岗位职责
2013/11/29 职场文书
小学生读书感言
2014/02/12 职场文书
新年联欢会主持词
2014/03/27 职场文书
学历公证委托书
2014/04/09 职场文书
小学生国庆演讲稿
2014/09/05 职场文书
企业法人授权委托书
2014/09/25 职场文书
带香烟到学校抽的检讨书
2014/09/25 职场文书
人事代理委托书
2014/09/27 职场文书
python实现手机推送 代码也就10行左右
2022/04/12 Python