wcq15759797758 发表于 2021-6-26 13:51:43

requests-html模块介绍以及静态爬取

本帖最后由 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 输入以下代码
pip install requests-html

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

session = HTMLSession()
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'}
data = {'user':'admin','password':'123456'}
url = 'http://httpbin.org/post'
response = session.post(url=url,headers=ua,data=data)
if response.status_code ==200:
    print(response.text)

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

import requests,json
from requests_html import HTMLSession

session = HTMLSession()          # 创建HTML会话对象
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'}
url = 'http://news.youth.cn/jsxw//'
response = session.get(url=url,headers=ua)
response.encoding='gb2312'   #编码格式
if response.status_code == 200:         # 判断请求是否成功
    # 获取所有class=tj3_1中的li标签
    li_all = response.html.xpath('.//ul[@class="tj3_1"]/li')
    for li in li_all:               # 循环遍历每个li标签
      news_title = li.find('a').text# 提取新闻标题内容
      # 获取新闻详情对应的地址
      news_href = 'http://news.youth.cn/jsxw'+\
                  li.find('a').attrs.get('href').lstrip('.')   #lstrip的作用是 方法用于截掉字符串左边的空格或指定字符
      news_time = li.find('font').text    # 获取新闻发布的时间
      print('新闻标题为:',news_title)   # 打印新闻标题
      print('新闻url地址为:',news_href) # 打印新闻url地址
      print('新闻发布时间为:',news_time)# 打印新闻发布时间

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

私はり 发表于 2021-6-26 15:16:53

学习到了

wcq15759797758 发表于 2021-6-26 15:20:11

私はり 发表于 2021-6-26 15:16
学习到了

{:10_254:}

hornwong 发表于 2021-6-26 15:41:41

{:5_95:}

peak6009 发表于 2021-6-26 16:21:31

漂亮!

wcq15759797758 发表于 2021-6-26 16:22:30

peak6009 发表于 2021-6-26 16:21
漂亮!

注释很到位!

我是小白别骗我 发表于 2021-6-26 16:52:00

可以

robinyunhao 发表于 2021-6-26 18:43:41

{:10_260:}{:10_261:}

超级玛尼哄 发表于 2021-6-27 00:01:19

{:10_261:}

龙舞九天 发表于 2021-6-27 06:30:58

{:5_95:}

kerln888 发表于 2021-6-27 06:45:23

{:5_92:}学习了

懒狗李 发表于 2021-6-27 18:36:21

{:10_254:}

1835575828 发表于 2021-7-3 16:13:23

fish_nian 发表于 2021-7-3 18:26:40

{:9_227:}学习了

match123_xbd 发表于 2023-4-8 23:25:53

{:7_131:}
页: [1]
查看完整版本: requests-html模块介绍以及静态爬取