Beautifulsoup 没有得到所有的 mailto href
Beautifulsoup doesn't get all mailto href
我正在尝试使用以下代码查找网站上的所有电子邮件:
import requests
from bs4 import BeautifulSoup
website = 'http://abborup.dk/sidsteny/lejligheder-til-salg/'
response = requests.get(website)
soup = BeautifulSoup(response.content, 'html.parser')
Email_list = []
for email in soup.select('a[href^=mailto]'):
data = email['href']
data = data.split('?')[0]
data = data.replace('mailto:', '')
Email_list.append(data)
问题是我没有收到该网站的所有 mailto 电子邮件,知道我做错了什么吗?
看起来并非所有项目实际上都是直接在原始页面源中邮寄的,而是由 JavaScript 生成的。
你最好只使用正则表达式,比如:
import requests
import re
r = requests.get('http://abborup.dk/sidsteny/lejligheder-til-salg/')
emails = [
'{}@{}'.format(*el)
for el in re.findall('var username = "(.*?)"; var hostname = "(.*?)"', r.text)
]
我对这种方法的稳健性或优雅性不抱太大希望,但似乎适用于您的示例。
我正在尝试使用以下代码查找网站上的所有电子邮件:
import requests
from bs4 import BeautifulSoup
website = 'http://abborup.dk/sidsteny/lejligheder-til-salg/'
response = requests.get(website)
soup = BeautifulSoup(response.content, 'html.parser')
Email_list = []
for email in soup.select('a[href^=mailto]'):
data = email['href']
data = data.split('?')[0]
data = data.replace('mailto:', '')
Email_list.append(data)
问题是我没有收到该网站的所有 mailto 电子邮件,知道我做错了什么吗?
看起来并非所有项目实际上都是直接在原始页面源中邮寄的,而是由 JavaScript 生成的。
你最好只使用正则表达式,比如:
import requests
import re
r = requests.get('http://abborup.dk/sidsteny/lejligheder-til-salg/')
emails = [
'{}@{}'.format(*el)
for el in re.findall('var username = "(.*?)"; var hostname = "(.*?)"', r.text)
]
我对这种方法的稳健性或优雅性不抱太大希望,但似乎适用于您的示例。