Python学习之旅 -11-爬虫利器Requests-HTML使用方法
Posted 面包的储物间
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习之旅 -11-爬虫利器Requests-HTML使用方法相关的知识,希望对你有一定的参考价值。
requests-html 是基于现有的框架 PyQuery、Requests、lxml、beautifulsoup4等库进行了二次封装,作者将Requests设计的简单强大的优点带到了该项目中。
1.安装
pip install requests-html
2.教程与使用
2.1 发送get请求
from requests_html import HTMLSession
session = HTMLSession()
# 发出GET请求:
resposse = session.get(‘http://news.qq.com/‘)
2.2 按原样获取页面上所有链接的列表(不包括锚点):
#按原样获取页面上所有链接的列表(不包括锚点):
print(r.html.links)
#输出内容:{‘http://www.mohrss.gov.cn/‘, ‘http://www.dahe.cn/‘, ......}
2.3 以绝对形式抓取页面上所有链接的列表(锚点除外):
# 以绝对形式抓取页面上所有链接的列表(锚点除外):
print(r.html.absolute_links)
#输出内容:{‘http://new.qq.com/omn/20180630A0L1ED.html‘, ‘http://news.qq.com/a/20180624/001511.htm‘, ‘http://new.qq.com/omn/20180630A12MEU.html‘, ......}
2.4使用CSS选择器选择一个元素:
# 使用CSS选择器选择第一个元素:
title = r.html.find(‘.f14>a‘, first=True).text
print(title)
# 输出内容:重磅!2018年版自贸试验区外资准入负面清单出炉
#注意:first=True的意思是获取第一个元素,如果不加上就是获取所有的符合的元素
2.5 attrs 获取元素的所有属性:
# attrs 获取元素的所有属性:
title = r.html.find(‘.f14>a‘, first=True)
print(title.attrs)
# 输出内容:{‘target‘: ‘_blank‘, ‘class‘: (‘linkto‘,), ‘href‘: ‘http://new.qq.com/omn/FIN2018063001805300‘}
2.6 获取元素的html:
# 获取元素的html:
title = r.html.find(‘.f14>a‘, first=True)
print(title.html)
# 输出内容:<a target="_blank" class="linkto" href="http://new.qq.com/omn/FIN2018063001805300">重磅!2018年版自贸试验区外资准入负面清单出炉</a>
2.7 搜索元素内的链接:
# 搜索元素内的链接:
title = r.html.find(‘.f14>a‘, first=True)
print(title.absolute_links)
# 输出内容:{‘http://new.qq.com/omn/FIN2018063001805300‘}
2.8 在页面上搜索文字:
# 在页面上搜索文字:
title = r.html.search(‘重磅!{}年版自贸试验区外资准入负面清单出炉‘)[0]
print(title)
# 输出内容:2018
2.9 XPath路径定位元素
# XPath路径定位元素
title = r.html.xpath(‘//div[@class="text"]/em/a/text()‘)[0]
print(title)
# 输出内容:重磅!2018年版自贸试验区外资准入负面清单出炉
2.10 解析本地文件
from requests_html import HTML
doc = """<a href=‘http://news.qq.com/‘>"""
html = HTML(html=doc)
print(html.links)
# 输出内容:{‘http://news.qq.com/‘}
3.实例:
# 实例:获取腾讯新闻的标题和链接
from requests_html import HTMLSession
session = HTMLSession()
r = session.get("http://news.qq.com/")
# 通过CSS找到新闻标签
news = r.html.find(‘.f14>a‘)
for new in news:
print(new.text) # 新闻标题
print(new.absolute_links) # 新闻连接
# 输出内容:
# 重磅!2018年版自贸试验区外资准入负面清单出炉
# {‘http://new.qq.com/omn/FIN2018063001805300‘}
# 津巴布韦7月1日起对中国游客实行落地签证政策
# {‘http://news.qq.com/a/20180630/019314.htm‘}
# 侠客岛:听说特朗普要见普京?这首歌送给他们
# {‘http://new.qq.com/omn/20180630A1GASD00‘}
# 高等教育史上大动作:工科生“土”帽子要摘了
# {‘http://new.qq.com/omn/20180630G07FLY00‘}
# 日本小型火箭升空后4秒坠毁爆炸 现场火光冲天
# {‘http://new.qq.com/omn/20180630V157BT00‘}
# 洞庭湖“私家湖泊”新进展:铲除非法堤坝
# {‘http://new.qq.com/omn/20180630A0ILA600‘}
# 讨论很热烈!个税法修订征求意见数已超1.3万条
# {‘http://new.qq.com/zt/template/?id=FIN2018061901656900‘}
以上是关于Python学习之旅 -11-爬虫利器Requests-HTML使用方法的主要内容,如果未能解决你的问题,请参考以下文章