鱼C论坛

 找回密码
 立即注册
查看: 4380|回复: 14

[技术交流] requests-html模块介绍以及静态爬取

[复制链接]
发表于 2021-6-26 13:51:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 wcq15759797758 于 2021-6-26 14:43 编辑

一.介绍
Python上有一个非常著名的HTTP库——requests,相信大家都听说过,用过的人都说非常爽!现在requests库的作者又发布了一个新库,叫做requests-html,看名字也能猜出来,这是一个解析HTML的库,具备requests的功能以外,还新增了一些更加强大的功能,用起来比requests更爽!接下来我们来介绍一下它吧。
官网告诉我们,它比原来的requests模块更加强大,并且为我们提供了一些新的功能!

支持JavaScript
支持CSS选择器
支持Xpath选择器
可自定义模拟User-Agent(模拟得更像真正的web浏览器)
自动追踪重定向
连接池与cookie持久化
支持异步请求

二.安装
安装requests-html非常简单,一行命令即可做到。需要注意一点就是,requests-html只支持Python 3.6或以上的版本,所以使用老版本的Python的同学需要更新一下Python版本了。
打开cmd 输入以下代码
  1. pip install requests-html
复制代码


三.请求代码例子
  1. from requests_html import HTMLSession

  2. session = HTMLSession()
  3. ua = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3870.400 QQBrowser/10.8.4405.400'}
  4. data = {'user':'admin','password':'123456'}
  5. url = 'http://httpbin.org/post'
  6. response = session.post(url=url,headers=ua,data=data)
  7. if response.status_code ==200:
  8.     print(response.text)
复制代码


四.静态抓取哦
抓取中国青年网板块中的即时新闻
网址为:http://news.youth.cn/jsxw/

  1. import requests,json
  2. from requests_html import HTMLSession

  3. session = HTMLSession()          # 创建HTML会话对象
  4. ua = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3870.400 QQBrowser/10.8.4405.400'}
  5. url = 'http://news.youth.cn/jsxw//'
  6. response = session.get(url=url,headers=ua)
  7. response.encoding='gb2312'   #编码格式
  8. if response.status_code == 200:         # 判断请求是否成功
  9.     # 获取所有class=tj3_1中的li标签
  10.     li_all = response.html.xpath('.//ul[@class="tj3_1"]/li')
  11.     for li in li_all:                 # 循环遍历每个li标签
  12.         news_title = li.find('a')[0].text  # 提取新闻标题内容
  13.         # 获取新闻详情对应的地址
  14.         news_href = 'http://news.youth.cn/jsxw'+\
  15.                     li.find('a[href]')[0].attrs.get('href').lstrip('.')   #lstrip的作用是 方法用于截掉字符串左边的空格或指定字符
  16.         news_time = li.find('font')[0].text    # 获取新闻发布的时间
  17.         print('新闻标题为:',news_title)   # 打印新闻标题
  18.         print('新闻url地址为:',news_href) # 打印新闻url地址
  19.         print('新闻发布时间为:',news_time)# 打印新闻发布时间
复制代码


提取数据的方式有很多种 本人一般用的是 xpath css

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-26 15:16:53 | 显示全部楼层

回帖奖励 +1 鱼币

学习到了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-26 15:20:11 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-26 15:41:41 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-26 16:21:31 | 显示全部楼层

回帖奖励 +1 鱼币

漂亮!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-6-26 16:22:30 | 显示全部楼层

注释很到位!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-26 16:52:00 | 显示全部楼层

回帖奖励 +1 鱼币

可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-26 18:43:41 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-27 00:01:19 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-27 06:30:58 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-27 06:45:23 | 显示全部楼层

回帖奖励 +1 鱼币

学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-27 18:36:21 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-3 16:13:23 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-3 18:26:40 | 显示全部楼层
学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-8 23:25:53 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 20:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表