Python爬虫工具Requests-HTML

  • A+
所属分类:Python库介绍
摘要这一篇文章主要介绍python爬虫的一些内容. 主要是关于requests-html使用的一些记录。其中会包含一些css selector和xpath的内容.

Request构造请求参数

这里介绍一个例子,进行url的构造后进行请求(常用语请求一些api的接口,如历史天气)。这里会使用Request进行完成。

  1. #coding:utf-8
  2. import json,urllib
  3. try:
  4.     from urllib.parse import urlencode
  5. except ImportError:
  6.     from urllib import urlencode
  7. #from urllib.request import urlopen
  8. import requests
  9. def get_message(find_date):
  10.   url = 'http://api.k780.com'
  11.   params = {
  12.     'app' : 'weather.history',
  13.     'weaid' : '1',#城市id
  14.     'date' : find_date,#查询日期
  15.     'appkey' : '33690',
  16.     'sign' : 'bdcf684483992488f5d296a53b846283',
  17.     'format' : 'json',
  18.   }
  19.   params = urlencode(params)
  20.   try:
  21.       f = requests.get('%s?%s' % (url, params))
  22.       while f.status_code != 200: # 重复请求
  23.           f = requests.get('%s?%s' % (url, params))
  24.       html=f.content # 获取请求内容
  25.       nowapi_call=str(html)
  26.       a_result = json.loads(nowapi_call)
  27.   return a_result

上面的代码作为一个小的样例,可以在params中定制自己需要的参数。

Requests-HTML的使用

数据提取CSS Selector

我们使用百度首页做一个例子,我们想要获得value中的值, 我们分别可以使用下面两种方式。

Python爬虫工具Requests-HTML
  1. from requests_html import HTMLSession
  2. session = HTMLSession()
  3. url = 'https://www.baidu.com/'
  4. r = session.get(url)

根据ID进行提取

  1. # 通过ID的方式搜索
  2. for i in r.html.find('span input#su'):
  3.     print(i.lxml.xpath('//@value'))
Python爬虫工具Requests-HTML

我们可以看到上面id为su的input,被span包裹,所以提取的时候写法为:span input#su.

根据class进行提取

  1. # 通过class的方式搜索
  2. for i in r.html.find('span input.s_btn'):
  3.     print(i.lxml.xpath('//@value'))
Python爬虫工具Requests-HTML

通过class进行提取的时候,使用.的记号进行提取,如这里的input的class是s_btn,就可以写成input.s_btn来进行提取。

数据提取Xpath

XPath 是一门路径提取语言,常用于从 html/xml 文件中提取信息。它的基规则如下

Python爬虫工具Requests-HTML

我们在上面的提取中,为了提取input中value属性的值,就已经使用了xpath了,具体可以看重新看一下上面的例子。

参考链接

Python爬虫工具Requests-HTML

Request-HTML官方文档

最新的爬虫工具requests-html

Requests-HTML: HTML Parsing for Humans

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: