python 在 findall 中组合多个编译表达式

python Combine multiple compile expressions in findall

我自己写了一个代码,是这样的

import requests
from bs4 import BeautifulSoup
import re
import pandas as pd

URL = 'https://www.books.toscrape/j/detail/164857/963108'
content = requests.get(URL).content
soup = BeautifulSoup(content,"html.parser")

phone = soup.find_all(text=re.compile("phone|phone"))
name = soup.find_all(text=re.compile("name|name"))
mail = soup.find_all(text=re.compile("mail|mail"))

df = pd.DataFrame([phone,name,mail,])
df.to_csv('D:\products.csv', index=False, encoding='utf-8')

是的,看起来很奇怪,我希望这三个粉丝可以合并为一个, 像这样

F = soup.find_all(text=re.compile("phone|phone")),soup.find_all(text=re.compile("name|name")),soup.find_all(text=re.compile("mail|mail"))

过来帮帮我

一种写得更短的方法是:

data = [soup.find_all(text=re.compile(pat)) for pat in ("phone", "name", "mail")]

df = pd.DataFrame(data)