简体   繁体   中英

Python & Selenium: what's the best way to hierarchically select data from html elements?

As an exercise for learning Python and Selenium, I'm trying to write a script that checks a web page with all kinds of commercial deals, find all the specific food deals (class name 'tag-food'), put them in a list (elem), then check which ones contain the text 'sushi', and for those elements extract the html element which contains price. And print the results.

I have:

elem = driver.find_elements_by_class_name('tag-food')

i = 0
while i < len(elem):
    source_code = elem[i].get_attribute("innerHTML")
    # ?? how to check if source_code contains 'sushi'?
    # ?? if true how to extract price data?
    i = i + 1
driver.quit()

What's the best and most direct way to do these checks? Thanks!

I don't think you need a while loop for this. Also, you would be looking for a text value, not innerHTML

You can make it more simple like this:

for row in driver.find_elements_by_class_name('tag-food'):
    if "sushi" in row.get_attribute("innerText"):
        print("Yes this item has sushi")
        # find element to grab price, store in variable to do something else with
    else:
        print("No sushi in this item")

Or even just this, depending on how the text in the HTML is structured:

for row in driver.find_elements_by_class_name('tag-food'):
    if "sushi" in row.text:
        print("Yes this item has sushi")
        # find element to grab price, store in variable to do something else with
    else:
        print("No sushi in this item")

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM