我正在研究“Video Downloader”,我对BeautifulSoup4有一个问题。
&#xA;&#xA;这是html的一部分,我希望得到一个href:< / p>&#xA;&#xA;
&lt; script src =“/ static / common.js?v7”&gt;&lt; / script&gt;&#xA;&lt; script type =“text / JavaScript的“&GT;&#XA; var c = 6;&#xA; window.onload = function(){&#xA;计数();&#XA; }&#XA;&#XA; function closeAd(){&#xA; $( “#易于箱”)隐藏();&#XA; }&#XA;&#XA; function notLogedIn(){&#xA; $(“#not-loged-in”)。html(“你需要登录才能下载这部电影!”);&#xA; }&#XA;&#XA; function count(){&#xA; if(document.getElementById('countdown')!= null){&#xA; c - = 1;&#xA; //如果计数器在范围内,我们将剩余的秒数放在&lt; span&gt;下面&#xA; if(c> = 0)&#xA; if(c == 0){&#xA; document.getElementById('countdown')。innerHTML ='';&#xA; }&#XA;别的{&#xA; document.getElementById('countdown')。innerHTML = c; &#XA; }&#XA;别的{&#xA; document.getElementById('download-link')。innerHTML ='&lt; a style =“text-decoration:none;” href =“http://s896.vshare.io/download,9999999999999999999999999999999999999999-f6192405453bf5ff3cfe41a488d8390d,5944ed28,4d948c5.avi”&gt;点击此处&lt; / a&gt;下载请求的文件。';&#xA;返回;&#XA; &#xA; // setTimeout('count()',1000);&#xA; }&#XA; }&#XA; &lt; / script&gt;&#xA;&lt; script type =“text / javascript”src =“/ static / flowplayer / flowplayer-3.2.13.min.js”&gt;&lt; / script&gt;&#xA; 代码>
&#xA;&#xA; 这里是我要打印的href:
&#xA;&#xA; href =“http: //s896.vshare.io/download,999999999999999999999994599999999999999999-f6192405453bf5ff3cfe41a488d8390d,5944ed28,4d948c5.avi"
我正在尝试这个,但是它不起作用。
&#xA;&#xA; for in soup3.find_all('a'):&#xA;如果'href'在a.attrs中:&#xA;印刷(一个[ 'HREF'])&#XA; 代码>
&#XA;
答案 0 :(得分:0)
Beautiful Soup可以解析HTML和XML,而不是JavaScript。
您可以使用正则表达式来搜索此代码
使用<a [^>]*?(href=\"([^\">]+)\")
,您可以匹配此代码中的所有内容:
<a
- 是a
代码[^>]*?
- 可以包含任何不是>
href="
- 有href [^\">]+
- 除"
和>
要从html中提取脚本代码,您可以使用
script = soup.find('script', {'type': 'text/javascript'})
然后解析它,使用
re.search(r"<a [^>]*?(href=\"([^\">]+)\")", script.text)
请先记得import re
。
print(re.search(r"<a [^>]*?(href=\"([^\">]+)\")", script.text)[1])
# href="http://s896.vshare.io/download,9999999999999999999999999999999999999999-f6192405453bf5ff3cfe41a488d8390d,5944ed28,4d948c5.avi
print(re.search(r"<a [^>]*?(href=\"([^\">]+)\")", script.text)[2])
# http://s896.vshare.io/download,9999999999999999999999999999999999999999-f6192405453bf5ff3cfe41a488d8390d,5944ed28,4d948c5.avi
阅读正则表达式。如果您打算经常使用模式,请先编译它 https://docs.python.org/3/library/re.html