获取当天日期 + 正则提取中间字符串

笔记 · 2023-07-27 · 290 人浏览
获取当天日期 + 正则提取中间字符串

  最近小爬了某个实时更新的网页,在此期间印象比较深刻的有两个地方(解决方法和以往不同)。因为不太常用这些,希望能有更好的解决方法。


替换成当天时间

思路:需要根据当前时间日期来替换URL中的特定部分。

  像平常爬的网站都有固定的格式,只需更改类似 page 后的值即可请求到相对应的页面。而这个网站挺有意思的是它页面结尾是以当前日期的 年/月/日/时.html 显示,且每一个小时更新一次。
  例如当前网站:https://www.just1n.cn/2023/07/27/10.html,我们可以使用datetime 模块来用本地时间计算出这个特定部分。

import requests
import datetime

# 这里的 rd.random_UA 已提前封装
headers = rd.random_UA()  # 随机UA

nowtime = datetime.datetime.now().strftime('%Y/%m/%d/%H')

request = requests.get(f"https://www.just1n.cn/{nowtime}.html", headers=headers)

  上述代码中函数 strftime 可以实现本地时间\日期的格式化(将任意格式的日期字符串按要求进行格式化),返回以可读字符串表示的当地时间,格式由参数 format 决定。常见控制字符符号如下:

格式符号 描述
%y 两个数字表示的年份 23
%Y 四个数字的年份表示 2023
%m 返回月份 范围 [0,12]
%M 返回分钟数 范围 [0,59]
%d 返回的是当前时间是当前月的第几天 范围 [0,31]
%H 以24小时制表示当前小时
%I 以12小时制表示当前小时
%M 返回分钟数 范围 [0,59]
%S 返回秒数 范围 [0,59]
%P 返回是上午还是下午–AM or PM

正则提取中间内容

思路:指定起始字符串和结束字符串提取中间内容,不包含始末字符串

  HTML元素的定位本来是可以采用很多常见的方式的,如CSS、XPath等。因为没尝试用正则做过,所以尝试一下,但结果差强人意——有些特殊的标记还要再次进行分割删除。可能还是技术不到家 T_T

import re

# 通过上述代码得到
html = request.text
# START_STR:起始字符串,END_STR:结束字符串
content = re.findall('(?<=START_STR).*?(?=END_STR)', str(html))

  将上述代码中起始和结束字符串替换即可使用,需要注意的是逗号后面的参数一定要是字符串类型

Python
Theme Jasmine by Kent Liao

本网站由 又拍云 提供CDN加速/云存储服务

鄂ICP备2023005457号    鄂公网安备 42011302000815号

欢迎来自 * · * 的用户