Python学习之旅 -11-爬虫利器Requests-HTML使用方法

Posted 面包的储物间

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习之旅 -11-爬虫利器Requests-HTML使用方法相关的知识,希望对你有一定的参考价值。

  • requests-html 是基于现有的框架 PyQuery、Requests、lxml、beautifulsoup4等库进行了二次封装,作者将Requests设计的简单强大的优点带到了该项目中。

  • GiHub项目地址:https://github.com/kennethreitz/requests-html

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>&#13;

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使用方法的主要内容,如果未能解决你的问题,请参考以下文章

Python学习之旅---函数递归

Python学习之旅---requests模块

Python学习之旅---自定制property

Python学习之旅

Python学习之旅(三十)

Python学习之旅---描述符+装饰器应用