Python 使用 cookie 登录网页并解析源码

背景

老项目中的部分接口要下掉,需要去 cat 看下流量,人工一个一个搜索太费劲,也无聊,就写了个脚本来自动检索接口流量,这里就不具体写怎么搞 cat 的了,给一个简单的利用 Python cookie 登录网页,并解析网页内容的方法。

目录

  1. Python 使用 cookie 登录网页
  2. xpath HTML 解析
    1. 这里附带一个完整的获取简书首页文章标题的例子

Python 使用 cookie 登录网页

使用 urllib 库进行 request 请求,据说 requests 库更好一些,我觉得满足需求即可,这里就用 urllib 了,有兴趣的同学可以去看看 requests 库,或者我哪天有时间了再更一版 。。。

因为代码真的很简单,就直接上代码了,注释也写在代码中

# 导包
from urllib import request

url = '要解析的 url 地址'
cookie_str = r'网页F12抓出来一个cookie'
# 构建 rquest 请求
req = request.Request(url) 
req.add_header('cookie', cookie_str)
# 发送请求并获取响应
resp = request.urlopen(req).read().decode('utf-8')
# print(resp) # 打印一下响应,会发现就是网页的 html 源码

注:

  1. 因为我登录的 cat 是内部网站,所以不用设置 ua 等参数,如果是正常的网站(有反爬机制),最好还是设置一下常用的 request headers

XPath 解析 HTML 源码

HTML 的解析可以使用正则表达式,也可以使用 xpath,xpath 比正则要简单太多了
下面给出解析简书首页,获取文章标题的一段代码

给一个获取简书首页文章标题的例子【发现简书有反爬,在此声明,本教程仅供学习使用】

# 导包
from urllib import request
import lxml.etree as etree

# 获取首页源码
url = 'https://www.jianshu.com/'
headers = {
  'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
}
req = request.Request(url=url,headers=headers)  # [1]
# 发送请求并获取响应
resp = request.urlopen(req).read().decode('utf-8')
# xpath 解析内容
selector = etree.HTML(resp)
title_list = selector.xpath(r'//a[@class="title"]/text()') # [2]
print(title_list)
------------------输出如下-----------------
['产品经理必备的5类原型部件,你知道几个?', '动物小说|一条狗的追求', '老人与猫', '架构师常用的设计图', '真正抑郁的人是什么样的?', '轧死一条狗,反而得了一箱土鸡蛋', '愿你过自己喜欢的生活']

注释:

  1. [1] 我们使用第一小节的方法获取了简书首页的源码,不同的是,获取简书首页的源码并不需要登录,并且由于简书有反爬机制,需要构建一个User-Agent,来伪装是浏览器的请求
  2. [2] 我们使用 xpath 规则提取了首页的所有标题信息,并存储在一个 list 中,这里简单解释下代码中用到的 xpath 语法规则:
    1. //a 表示从任意一个位置开始取a 标签,注意这里是两个 / ,如果是一个/ 就表示绝对路径
    2. [@class='title'] []表示特定属性的a标签,我们发现所有的标题都有属性class='title' ,所以我们就这么写了
    3. /text() 表示取标签中的内容,在这里就是文章标题内容
  3. 更多的 xpath 语法大家可以去自行搜索

结束语

分享王小波《一只特立独行的猪》里面的一句话,“我反对无趣,反对庄严肃穆的假正经”。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容