Невозможно выбрать элемент HTML с помощью CSS-селектора BeautifulSoup, но удалось получить элемент в JS с помощью селекторов CSS - PullRequest
0 голосов
/ 19 апреля 2019

Я использую Python и парсер HTML BeautfulSoup для выбора элементов HTML.Однако я не могу заставить это работать.

response = requests_session.post(login_url, headers=headers, data=data_credentials) # log in to the requests Session so that you can reuse it

search_url= 'https://www.website.com/search.php'
p_id='342953'

response = requests_session.get(search_url,headers=headers, params={'query':p_id,'type':'p'})
redirected_urls=response.url
th_soup = BeautifulSoup(response.content, 'html.parser')
trx_ht =th_soup.select("body > table > tbody > tr > td > table > tbody > tr:nth-child(2) > td:nth-child(2) > div:nth-child(3) > table > tbody > tr:nth-child(11) > td > table > tbody > tr:nth-child(4) > td:nth-child(5) > input[type='hidden']:nth-child(1)")

Ответы [ 2 ]

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

В HTML-коде, который вы указали в своей папке для вставки, скрытый ввод можно найти с помощью вызова .find_all() с определенными атрибутами. Если нужное поле всегда начинается с qtyb-, вы можете использовать регулярное выражение с BeautifulSoup, чтобы найти все подходящие элементы следующим образом:

from bs4 import BeautifulSoup
import re

# Read the HTML in from a file (normally requests is used)

with open('sm7iXcUq.html', encoding='utf-8') as f_html:
    html = f_html.read()

soup = BeautifulSoup(html, 'html.parser')

for i in soup.find_all('input', attrs={'type' : 'hidden', 'name' : re.compile('qtyb-.*')}):
    print(i)

Для HTML-кода, который вы указали, возвращается один элемент следующим образом:

<input name="qtyb-52843099" type="hidden" value="1"/>

Значение для name можно получить с помощью:

i['name']

Этот подход даст вам все элементы с совпадающим name.

0 голосов
/ 23 апреля 2019

Не могли бы вы также использовать следующее?Это предполагает, что input[value=1][name] является константой по источникам

soup.select_one('input[value=1][name]')['name']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...