Как получить этот текст, находящийся в тегах, используя Beautiful Soup? - PullRequest
0 голосов
/ 26 июня 2019

Я хочу получить число 121 из приведенного выше кода. Но предмет супа, который я получаю, не показывает номер.

Ссылка на мое изображение

    [<div class="open_pln" id="pln_1">
 <ul>
 <li>
 <div class="box_check_txt">
 <input id="cp1" name="cp1" onclick="change_plan(2,102,2);" type="checkbox"/>
 <label for="cp1"><span class="green"></span></label>
 </div>
 </li>
 <li id="li_open"><span>Desk</span> <br/></li>
 <li> </li>
 </ul>
 </div>]

Ответы [ 3 ]

1 голос
/ 26 июня 2019

Число 121 для открытых офисов находится не внутри HTML-кода, а в JavaScript.Вы можете использовать regex, чтобы извлечь его:

import re
import requests

url ='https://www.coworker.com/search/los-angeles/ca/united-states'

htmlpage = requests.get(url).text

open_offices = re.findall(r'var openOffices\s*=\s*(\d+)', htmlpage)[0]
private_offices = re.findall(r'var privateOffices\s*=\s*(\d+)', htmlpage)[0]

print('Open offices: {}'.format(open_offices))
print('Private offices: {}'.format(private_offices))

Отпечатки:

Open offices: 121
Private offices: 40
1 голос
/ 26 июня 2019

Без re модуля:

import requests
from bs4 import BeautifulSoup

url ='https://www.coworker.com/search/los-angeles/ca/united-states'

res = requests.get(url)
soup = BeautifulSoup(res.text,"lxml")
searchstr = "var openOffices = "
script = soup.select_one(f"script:contains('{searchstr}')").text
print(script.split(searchstr)[1].split(";")[0])

Вывод:

121
0 голосов
/ 26 июня 2019

вы должны найти все атрибуты li, используя вот такой суп -

    attribute=req["li"]       
    all_links = soup.find_all(attribute)
    for link in all_links:
        print(link.text.strip())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...