Я получаю следующую ошибку:
AttributeError: 'HTMLParserTreeBuilder' object has no attribute 'initialize_soup'
Я пытался найти xpath для флажка M в eBay ( ссылка )
Я использую spyder и импортировал bs4 везде, где могу.
import requests from bs4 import BeautifulSoup web_page = requests.get('https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=mens+shirt&_sacat=0') web_soup = BeautifulSoup(web_page.text, 'html.parser') checkbox = soup.find(class_='cbx x-refine__multi-select-checkbox') checkbox_names = checkbox.find_all('a') for check in checkbox_names: print(check.prettify())
Я ожидал такой вывод
<a href="/web/20121007172955/https://www.nga.gov/cgi-bin/tsearch?artistid=11630"> Zabaglia, Niccola </a>
Я следовал этому руководству , чтобы помочь мне с моим кодом.
Во-первых, ваш soup.find(class_='cbx x-refine__multi-select-checkbox') фактически выбирает только первый элемент с классом cbx x-refine__multi-select-checkbox
soup.find(class_='cbx x-refine__multi-select-checkbox')
cbx x-refine__multi-select-checkbox
Таким образом, чтобы получить URL для "Рубашки размера M", вы можете сделать следующее:
КОД:
import requests from bs4 import BeautifulSoup as soup web_page = requests.get('https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=mens+shirt&_sacat=0') web_soup = soup(web_page.text, 'html.parser') links = web_soup.find_all('a', {'class':'cbx x-refine__multi-select-link'}) for l in links: checkbox = l.find('input',{'class':'cbx x-refine__multi-select-checkbox '}) if checkbox and 'M' == checkbox.get('aria-label'): #FOUND print(l.get('href'))
ВЫВОД:
https://www.ebay.com/sch/i.html?_from=R40&_nkw=mens+shirt&_sacat=0&rt=nc&Size%2520%2528Men%2527s%2529=M&_dcat=185100