美丽的汤|从Java脚本中提取变量

时间:2019-01-22 07:11:49

标签: python regex web-scraping beautifulsoup

打火机

我正在用漂亮的汤从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)

输出:无

我不确定为什么正则表达式无法识别变量。

2 个答案:

答案 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而不使用bs4match尝试匹配整个字符串,改用search

withre = re.search('var appsTableData=(.*?)<script', data).group(1)
print(withre)

结果:

[[<"<a href='Something'/>"]]