Красивый суп |Извлечь переменную из сценария Java - PullRequest
0 голосов
/ 22 января 2019

зажигалки,

Я использую красивый суп для сбора данных с 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 голосов
/ 22 января 2019

с использованием 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'/>"]]
0 голосов
/ 22 января 2019

Используйте .string для текста, а затем используйте str.replace

Пример:

data = soup.find_all("script")[7].string 
print(data.replace("var appsTableData=", ""))

Выход:

[[<"<a href='Something'/>"]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...