打火机
我正在用漂亮的汤从HTML页面中提取数据,该页面的表主体下有几列。
请在模拟代码下面:
from bs4 import BeautifulSoup
import requests
import urllib.request as urllib2
import re
import json
app_page = urllib2.urlopen(myUrl)
soup = BeautifulSoup(app_page)
print(soup.prettify())
data = soup.find_all("script")[7]
data=re.sub("\n","",str(data))
print(data)
输出:
<script type="text/javascript"> var appsTableData=[[<"<a href='Something'/>"]]</script>
p = re.compile(' var appsTableData=(.*?)')"
print(p)
m = p.match(str(data))
print(m)
输出:无
我不确定为什么正则表达式无法识别变量。
答案 0 :(得分:0)
在文本上使用.string
,然后使用str.replace
例如:
data = soup.find_all("script")[7].string
print(data.replace("var appsTableData=", ""))
输出:
[[<"<a href='Something'/>"]]
答案 1 :(得分:0)
使用beautifulsoup和re.compile
data = '''<script type="text/javascript"> var appsTableData=[[<"<a href='Something'/>"]]</script>'''
soup = BeautifulSoup(data, "html.parser")
withbs = soup.find('script', string=re.compile('var appsTableData'))
withbs = withbs.text.replace('var appsTableData=', '').strip()
print(withbs)
使用re
而不使用bs4
,match
尝试匹配整个字符串,改用search
withre = re.search('var appsTableData=(.*?)<script', data).group(1)
print(withre)
结果:
[[<"<a href='Something'/>"]]