Я знаю, что об этом спрашивали и раньше, но я новичок в чистке и питоне.Пожалуйста, помогите мне, и это будет очень полезно для моего пути обучения.
Я очищаю новостной сайт, используя python с такими пакетами, как Beautiful Soup и т. Д.
Я сталкиваюсь с трудностями при получении значения переменной java script
, которая объявлена в теге script
, а также обновляется там.
Вот часть страницы HTML, которую я очищаю: (содержит толькочасть скрипта)
<!-- Eliminate render-blocking JavaScript and CSS in above-the-fold content -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.0/js/materialize.min.js"></script>
<script type="text/javascript" src="/dist/scripts/index.js"></script>
<script type="text/javascript" src="/dist/scripts/read.js"></script>
<script src="/dist/scripts/jquery.scrolldepth.min.js"></script>
<script type="text/javascript">
var min_news_id = "d7zlgjdu-1"; // line 1
function loadMoreNews(){
$("#load-more-btn").hide();
$("#load-more-gif").show();
$.post("/en/ajax/more_news",{'category':'politics','news_offset':min_news_id},function(data){
data = JSON.parse(data);
min_news_id = data.min_news_id||min_news_id; // line 2
$(".card-stack").append(data.html);
})
.fail(function(){alert("Error : unable to load more news");})
.always(function(){$("#load-more-btn").show();$("#load-more-gif").hide();});
}
jQuery.scrollDepth();
</script>
Из приведенной выше части я хочу получить значение min_news_id
в python.Я также должен получить значение той же переменной, если оно обновлено из строки 2.
Вот как я это делаю:
self.pattern = re.compile('var min_news_id = (.+?);') // or self.pattern = re.compile('min_news_id = (.+?);')
page = bs(htmlPage, "html.parser")
//find all the scripts tag
scripts = page.find_all("script")
for script in scripts:
for line in script:
scriptString = str(line)
if "min_news_id" in scriptString:
scriptString.replace('"', '\\"')
print(scriptString)
if(self.pattern.match(str(scriptString))):
print("matched")
data = self.pattern.match(scriptString)
jsVariable = json.loads(data.groups()[0])
InShortsScraper.newsOffset = jsVariable
print(InShortsScraper.newsOffset)
Но я никогда не получаю значение переменной.Это проблема с моим регулярным выражением или другим?Пожалуйста, помогите мне.Заранее спасибо.