#python #beautifulsoup
#python #beautifulsoup
Вопрос:
Я столкнулся с проблемой, в которой мне нужно вывести значение «input.php?id = 293» ключа «location.href=» из кода.
<script>location.href="input.php?id=293";</script>
Я попробовал приведенный ниже код, но в итоге застрял.
import requests
from bs4 import BeautifulSoup
import re
url = https://localhost/sample.php
response = requests.get(url)
soup = BeautifulSoup(response.text, features="lxml")
value = soup.find_all(text=re.compile(r'location.href'))
print (value)
Любая помощь будет оценена.
Ответ №1:
Это можно решить следующим образом:
from bs4 import BeautifulSoup
data = BeautifulSoup('<script>location.href="input.php?id=293";</script>')
data.get_text()[15:-2]
Комментарии:
1. Привет, Алона! Спасибо за ответ. Я попробовал ваш код, и он дал мне пустой ответ. Можно ли получить значение, не превращая его в статический текст?
2. @Alex, но можешь ли ты получить какое-либо значение, просто попробовав data.get_text() ?
3. Нет данных, программа просто возвращает ‘ ‘. Нам нужно soup.find_all, чтобы правильно найти наши данные?
4. @Alex, есть несколько методов, которые можно использовать: find_all(), find(), find_parents(), find_previous_siblings(), find_all_next(), find_all_previous() и т.д. Но первые два являются наиболее часто используемыми
Ответ №2:
Попробуйте это:
import re
from bs4 import BeautifulSoup
txt = """<script>location.href="input.php?id=293";</script>"""
soup = BeautifulSoup(txt, "html.parser")
pattern = re.compile(r'("input.php?id=293")')
value = soup.find_all(text=pattern)
result = pattern.search(str(value)).group()
print(result)
Вывод:
"input.php?id=293"