soupstrainer和php找不到所有div

时间:2019-03-17 21:10:23

标签: php python beautifulsoup

我正在尝试用python填写表单,然后检索结果页面以在我的.php文件中使用它。 Python代码:

def sitecheck(SITE_URL2):
    URL2 = "https://achecker.ca/checker/index.php"
    payload = {
        'uri': SITE_URL2,
        'enable_html_validation': 'on',
        'enable_css_validation': 'on',
        'show_source': 'on',
        'radio_gid[]': '3'
    }
    payload = urllib.parse.urlencode(payload).encode("utf-8")

    # prepare the option for the chrome driver and start chrome driver
    options = webdriver.ChromeOptions()
    options.headless = True    
    driver = webdriver.Chrome(options=options)
    driver.get(URL2)
    inputElement = driver.find_element_by_id("checkuri")
    inputElement.send_keys(SITE_URL2)

    driver.find_element_by_link_text("Options").click()
    driver.find_element_by_id("enable_html_validation").click()
    driver.find_element_by_id("enable_css_validation").click()
    driver.find_element_by_id("radio_gid_3").click()
    driver.find_element_by_name("validate_uri").click()

    html = driver.execute_script("return document.getElementsByTagName('html')[0].innerHTML")
    driver.quit()

    s = ""
    fonly = SoupStrainer('div', {
        'id': ['AC_errors', 'AC_likely_problems', 'AC_potential_problems', 'AC_html_validation_result',
               'AC_css_validation_result']})
    for link in BeautifulSoup(html, "lxml", parse_only=fonly):
        s = s + str(link)

    print(s)
    return ;

.php代码是这样的:

<?php
$path="pyt"; 
        chdir($path); 

        $output = shell_exec('python newfile_1.py');
        "<pre>$output</pre>"        
?>

现在,python中的结果运行良好,我可以看到所有选定的div。但是,当我用php调用它时,我只能看到其中的三个,看起来“ AC_html_validation_result”和“ AC_css_validation_result”不再存在。 我的问题:我想在我的.php文件和.py文件中得到相同的结果,我不知道为什么这不起作用。我需要做的就是填写表格,并在结果页面中获取div并将其复制到php文件中。另外,我注意到这段代码非常慢,我想知道为什么。

0 个答案:

没有答案