爬虫 python

服务端渲染

客户端渲染

 1. requests && urlopen

urllib.request.urlopen(url) 还是 requests.get(url) 取决于具体的需求和上下文。

        以下是两者的对比以及如何选择适合自己的工具:

  1. 易用性和API设计

    • requests:API 设计更加人性化,提供了丰富的高级功能,如会话管理、自动重定向、cookies 处理等。
    • urllib:API 相对较低级,需要手动处理很多细节。

2. 正则

^ 在正则表达式中有两种不同的用途:

  1. 作为锚点:当 ^ 位于正则表达式的开始时,它表示匹配字符串的开始位置。也就是说,它确保整个模式从输入字符串的起始位置开始匹配。例如,^abc 只会匹配以 "abc" 开头的字符串。

  2. 在字符集中表示否定:当 ^ 被放置在方括号 [ ] 内部的开头位置时,它表示一个否定的字符集,即匹配不在括号内的任何字符。例如,[^abc] 表示匹配任何不是 'a''b''c' 的字符。

 正则表达式-数量词
        语法示例:x代表字符
        1. X? : x出现的数量为 0次或1次
        2. X* : x出现的数量为 0次到多次 任意次
        3. X+ : x出现的数量为 1次或多次         X>=1次
        4. X{n} : x出现的数量为 恰好n次         X=n次
        5. X{n,} : x出现的数量为 至少n次         X>=n次  x{3,}
        6. X{n,m}: x出现的数量为 n到m次(n和m都是包含的)   n=<X<=m

在正则表达式中,.*? 是一种非贪婪(也称为懒惰,lazy)的匹配模式。

  • . (点):匹配除换行符之外的任何单个字符。
  • * (星号):表示前面的字符或模式可以出现零次或多次。
  • ? (问号):当紧跟在 *+{n}{n,} 或 {n,m} 之后时,表示前面的量词应该尽可能少地匹配字符,即非贪婪匹配。

非贪婪匹配 vs. 贪婪匹配

  • 贪婪匹配(默认):默认情况下,量词(如 *+)是贪婪的,意味着它们会尽可能多地匹配字符。例如,在字符串 "abc123def" 中,模式 .* 会匹配整个字符串 "abc123def"
  • 非贪婪匹配(懒惰):当量词后面加上 ? 时,它会尽可能少地匹配字符。例如,在同样的字符串 "abc123def" 中,模式 .*? 会先尝试匹配零个字符,然后逐渐增加匹配的字符数,直到找到第一个成功的匹配为止。

import re

# 测试文本
text = "我的电话是10086,她的电话是10010"

# findall 返回列表
lst = re.findall(r"\d+", text)
print(lst)

# finditer  返回迭代器
for i in re.finditer(r"\d+", text):
    print(i.group())

# search 返回对象   Match object   全文匹配 返回第一个匹配对象
obj = re.search(r"\d+", text)
print(obj.group())

# # match 返回对象  Match object   只匹配开头
# obj = re.match(r"\d+", text)
# print(obj.group())

# 预加载正则表达式
obj = re.compile(r"\d+")
ret = obj.finditer("我有100000000000元")
for i in ret:
    print(i.group())
print(obj.findall("我有100000000000元"))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值