哪位程序员知道两项表达式怎么写在同一个re.compile(),我运行一个的时候能爬出东西,同时用正则获取两项数据的时候就发不出东西了



哪位程序员知道两项表达式怎么写在同一个re.compile(),我运行一个的时候能爬出东西,同时用正则获取两项数据的时候就发不出东西了



以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
你的问题看起来是想要在同一正则表达式中使用两个不同的模式来获取数据。我理解你需要提取两个不同的信息:“名字”(name)和“年份”(year)。在你的代码中,你似乎试图使用两个正则表达式来匹配这两个信息,但是你没有正确地组合它们。你可以尝试使用管道符 | 来在正则表达式中指定多个模式。同时,请注意,你需要为每个正则表达式指定自己的命名组(named group)。这里有一个示例:
import re
import requests
url = '你的目标网页url' # 这里需要你填入实际的url地址
header = {你的请求头信息} # 这里需要你填入实际的请求头信息
resp = requests.get(url, headers=header)
content = resp.text
pattern = r'<span>(?P<name>.*?)</span>|.*?<br>\s*(?P<year>\d{4}).*' # 使用管道符 "|" 来匹配两个不同的模式
obj = re.compile(pattern, re.S) # re.S 是 DOTALL 的简写,使 '.' 匹配任何字符,包括换行符等特殊字符
result = obj.finditer(content)
for it in result:
print("名字:", it.group('name')) # 输出匹配到的名字
print("年份:", it.group('year').strip()) # 输出匹配到的年份并去除前后的空白字符
这个正则表达式将会尝试匹配你想要的两个部分。一部分是名字 (<span>(?P<name>.*?)</span>) 和另一部分是年份 (.*?<br>\s*(?P<year>\d{4}))。请注意,这个正则表达式可能需要根据实际的网页结构进行调整。如果你需要进一步的帮助,请提供更多的上下文信息,如具体的网页结构或你想要提取的数据的具体格式。