#python #web-scraping #python-requests #lxml
#python #веб-очистка #python-запросы #lxml
Вопрос:
import requests
from lxml import html
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
session = requests.Session()
retry = Retry(connect=3, backoff_factor=0.5)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)
file = open("source_code.txt","w ")
url = "https://www.careers360.com/colleges/act-college-of-engineering-and-technology-kancheepuram"
page = session.get(url)
file.write(page.text)
content = html.fromstring(page.text)
intake = content.xpath("//div[@class='col-sm-12']//table//tbody//tr//td[contains(text(),'Total Student Enrollment')]//strong")
print(intake)
При использовании этого скрипта я получаю пустой список в качестве вывода.
Желаемый результат равен 100.
Тот же XPath работает с selenium, но не работает с этим скриптом.
Если у вас есть какое-либо решение для этого, пожалуйста, поделитесь.
Ответ №1:
проблема в теге html tbody
import requests
from lxml import html
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
session = requests.Session()
retry = Retry(connect=3, backoff_factor=0.5)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)
file = open("source_code.txt","w ")
url = "https://www.careers360.com/colleges/act-college-of-engineering-and-technology-kancheepuram"
page = session.get(url)
file.write(page.text)
content = html.fromstring(page.text)
intake = content.xpath("//div[@class='col-sm-12']//table//tr//td[contains(text(),'Total Student Enrollment')]//strong")
for item in intake:
print(html.tostring(item))
Результат:
b’100‘
Комментарии:
1. Большое вам спасибо за ваш быстрый ответ.
2. Я использовал ‘print (intake [0].text)’, чтобы получить значение — 100.
Ответ №2:
Почему бы вам не попробовать напрямую, как показано ниже? Вам не нужно создавать цикл для анализа требуемого результата.
import requests
from lxml.html import fromstring
url = "https://www.careers360.com/colleges/act-college-of-engineering-and-technology-kancheepuram"
with requests.Session() as s:
page = s.get(url)
content = fromstring(page.text)
intake = content.xpath("//table[@class='baseUl']//td[contains(.,'Total Student Enrollment')]/strong")[0].text.strip()
print(intake)