Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否有更好的方法按id格式化这些元素?_Python_Selenium_Xpath_Web Scraping - Fatal编程技术网

Python 是否有更好的方法按id格式化这些元素?

Python 是否有更好的方法按id格式化这些元素?,python,selenium,xpath,web-scraping,Python,Selenium,Xpath,Web Scraping,我重复了以下代码,想知道是否有人对如何更有效地编写此代码提出了一些建议: def get_description(links): for link in links: description = driver.find_elements_by_id('some-id') description = [x.text for x in description] description = " ".join(description)

我重复了以下代码,想知道是否有人对如何更有效地编写此代码提出了一些建议:

def get_description(links):
    for link in links:
        description = driver.find_elements_by_id('some-id')
        description = [x.text for x in description]
        description = " ".join(description)
        title = driver.find_elements_by_id('different-id')
        title = [x.text for x in title]
        title = " ".join(title)
        company = driver.find_elements_by_id('another-different-id')
        company = [x.text for x in company]
        company = " ".join(company)
        location = driver.find_elements_by_id('location-id')
        location = [x.text for x in location]
        location = " ".join(location)+ " United Kingdom"
        salary = driver.find_elements_by_xpath("//*[@id='randomly generated id']/div[3]/span[1]")
        salary = [x.text for x in salary]
        salary = " ".join(salary)
我尝试定义一个名为“element_parse”的单独函数,如下所示:

def parse_element(x)
    x = [y.text for y in x]
    x = " ".join(x)
然后通过执行以下操作调用此主函数:

description = driver.find_elements_by_id('some-id')
parse_element(description)
但是,唉!没有快乐


我不是一个停止表演的人,因为我已经让它工作了,但是我觉得这里有很多重复,我想清理一下

你就快到了。您需要从函数中返回x的值,并将该值重新分配给该结果。因此:

def parse_element(x)
    x = [y.text for y in x]
    x = " ".join(x)
    return x


你可以通过尝试下面的方法摆脱重复。此外,您不需要创建另一个函数来清理问题

def get_description(links):
    for link in links:
        description = ' '.join([x.text for x in driver.find_elements_by_id('some-id')])
        title = ' '.join([x.text for x in driver.find_elements_by_id('different-id')])
        company = ' '.join([x.text for x in driver.find_elements_by_id('another-different-id')])
        location = ' '.join([x.text for x in driver.find_elements_by_id('location-id')])
        salary = ' '.join([x.text for x in driver.find_elements_by_xpath("//*[@id='randomly generated id']/div[3]/span[1]")])

如果您想改进工作代码,请询问有关感谢Andersson的问题-我没有意识到这一点。我将很好地使用CodeReview,因此感谢您提醒我注意这一点!谢谢你,丹尼尔!这肯定有帮助。最后,我将另一个变量“y”传递给保存id的函数。
def get_description(links):
    for link in links:
        description = ' '.join([x.text for x in driver.find_elements_by_id('some-id')])
        title = ' '.join([x.text for x in driver.find_elements_by_id('different-id')])
        company = ' '.join([x.text for x in driver.find_elements_by_id('another-different-id')])
        location = ' '.join([x.text for x in driver.find_elements_by_id('location-id')])
        salary = ' '.join([x.text for x in driver.find_elements_by_xpath("//*[@id='randomly generated id']/div[3]/span[1]")])