如何在网站上使用 BeautifulSoup 或 Slimit 从 javascript 变量输出电子邮件地址
How can I use BeautifulSoup or Slimit on a site to output the email address from a javascript variable
>我有这个示例网站:http://www.example.com/whatever.asp?profile=1
对于每个配置文件号,我在此 Java 脚本代码中都有不同的电子邮件。
<script LANGUAGE="JavaScript">
function something()
{
var ptr;
ptr = "";
ptr += "<table><td class=france></td></table>";
ptr += "<table><td class=france><a href=mailto:exa";
ptr += "mple@email.com>email</a></td></table>";
document.all.something.innerHTML = ptr;
}
</script>
我想解析或正则表达式电子邮件地址。电子邮件的位置取决于长度。但是,使用此python代码,只有我可以解析 mple@email.com 而不是 example@email.com
url=urllib.urlopen('http://www.example.com/whatever.asp?profile=1')
contents= url.read()
soup = BeautifulSoup(contents)
js_content= soup.findAll("script")[0].text
reg = '(<)?('w+@'w+(?:'.'w+)+)(?(1)>)'
match= re.search(reg,js_content)
print match.group()
有什么帮助吗? 谢谢。
我建议你使用re.findall
而不是re.search
,因为搜索只会返回第一个匹配项。
url=urllib.urlopen('http://www.example.com/whatever.asp?profile=1')
contents= url.read()
soup = BeautifulSoup(contents)
js_content= soup.findAll("script")[0].text
reg = r'<?('w+@'w+(?:'.'w+)+)>?'
match= re.findall(reg,js_content)
#!/usr/bin/env python
from bs4 import BeautifulSoup
import re
soup = '''
<script LANGUAGE="JavaScript">
function something()
{
var ptr;
ptr = "";
ptr += "<table><td class=france></td></table>";
ptr += "<table><td class=france><a href=";
ptr += "mailto:example@knesset.com>email</a></td></table>";
document.all.something.innerHTML = ptr;
}
</script>
'''
soup = BeautifulSoup(soup)
for script in soup.find_all('script'):
reg = '(<)?('w+@'w+(?:'.'w+)+)(?(1)>)'
reg2 = 'mailto:.*'
secondHalf= re.search(reg, script.text)
firstHalf= re.search(reg2, script.text)
secondHalfEmail = secondHalf.group()
firstHalfEmail = firstHalf.group()
firstHalfEmail = firstHalfEmail.replace('mailto:', '')
firstHalfEmail = firstHalfEmail.replace('";', '')
if firstHalfEmail == secondHalfEmail:
email = secondHalfEmail
else:
if ('>') not in firstHalfEmail:
if ('>') not in secondHalfEmail:
if firstHalfEmail != secondHalfEmail:
email = firstHalfEmail + secondHalfEmail
else:
email = firstHalfEmail
else:
email = secondHalfEmail
print email
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- 这是什么 ==- javascript 运算符
- 从javascript创建一个列表
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Javascript:selenium Web驱动程序isDisplayed()不工作
- 如何通过ajax刷新JSF填充的javascript变量
- 如何在Javascript中将JSon对象转换为数组
- Javascript生成的表单未提交
- 使用javascript将动态表从一个html页面打印到另一个html页
- 如何在网站上使用 BeautifulSoup 或 Slimit 从 javascript 变量输出电子邮件地址