Я пытаюсь извлечь текст внутри span_id, но получаю пустой вывод, используя python beautifulsoup - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь извлечь текст внутри тега span-id, но получаю пустой экран вывода.

Я также пытался использовать текст div родительского элемента, но не смог извлечь, пожалуйста, кто-нибудь, помогите мне. ниже мой код.

 import requests
 from bs4 import BeautifulSoup

 r = requests.get('https://www.paperplatemakingmachines.com/')
 soup = BeautifulSoup(r.text,'lxml')
 mob = soup.find('span',{"id":"tollfree"})
 print(mob.text)

Я хочу, чтобы текст внутри этого промежутка, которому присвоен номер мобильного телефона.

Ответы [ 3 ]

1 голос
/ 18 апреля 2019

Вам придется использовать Selenium, так как этот текст отсутствует в первоначальном запросе или, по крайней мере, нет без поиска по тегам <script>.

from bs4 import BeautifulSoup as soup
from selenium import webdriver
import time

driver = webdriver.Chrome('C:\chromedriver_win32\chromedriver.exe')

url='https://www.paperplatemakingmachines.com/'
driver.get(url)

# It's better to use Selenium's WebDriverWait, but I'm still learning how to use that correctly
time.sleep(5)

soup = BeautifulSoup(driver.page_source, 'html.parser')
driver.close()

mob = soup.find('span',{"id":"tollfree"})
print(mob.text)
0 голосов
/ 18 апреля 2019

Другой способ использования регулярных выражений для поиска числа

import requests
import re
from bs4 import BeautifulSoup as bs

r = requests.get('https://www.paperplatemakingmachines.com/',)
soup = bs(r.content, 'lxml')
r = re.compile(r'var pns_no = "(\d+)"')
data = soup.find('script', text=r).text
script = r.findall(data)[0]
print('+91-' + script)
0 голосов
/ 18 апреля 2019

Данные на самом деле динамически воспроизводятся через скрипт.Что вам нужно сделать, это проанализировать данные из скрипта:

import requests
import re
from bs4 import BeautifulSoup

r = requests.get('https://www.paperplatemakingmachines.com/')
soup = BeautifulSoup(r.text,'lxml')
script= soup.find('script')
mob = re.search("(?<=pns_no = \")(.*)(?=\";)", script.text).group()
print(mob)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...