javascript - php - webscraping - 单击 ajax 调用然后抓取页面(可以在 python 中完成)

标签 javascript php jquery python ajax

我在 python 中有一些代码可以抓取页面并找到类名称为“group-head”的所有元素,然后单击它们以生成执行了所有 ajax 调用的页面。这在 python 中有效,但我想知道它是否可以在 curl/php 编码上完成?

 # Get scraping...
tree = parseLxml(driver=driver, url=url) # Go to URL and parse
elem = driver.find_elements_by_class_name('group-head') # Use ChromeDriver to find element to get to the Ajax call
for x in range(0,len(elem)): # Loop through all such elements
    try:  
        time.sleep(0.5)
        elem[x].click() # Click the element
        time.sleep(1.5) # Too fast and errors can occur, so wait...
    except:
        pass
newpage = driver.page_source # Need to get page source again now all visible
newtree = html.fromstring(newpage)
match = newtree.xpath('//td[contains(@class,"score-time")]/a/@href') # Scrape match link
base = 'http://uk.soccerway.com'
for m in match:
    mURL = base+str(m)
    print ('Match URL:',mURL)

最佳答案

您的代码正在使用 ChromeDriver,因此您应该寻找 PHP 绑定(bind)。

看看https://github.com/facebook/php-webdriver ,您应该能够以相同的方式使用它。 代码未经测试,但应如下所示:

$host = 'http://localhost:4444/wd/hub'; // Selenium Host
$driver = ChromeDriver::create($host);
$driver->get($url); // Got to Url and Load Page
$elements = $driver->findElements(WebDriverBy::className('group-head'));
....

关于javascript - php - webscraping - 单击 ajax 调用然后抓取页面(可以在 python 中完成),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34118152/

相关文章:

javascript - 在页面中包含 CSS 和 JavaScript 的最佳做法是什么?

php - 有更好的方法将值从第 1 页传递到第 3 页吗?

javascript - 使用 jQuery 确定在 html SELECT 控件中选择了哪些值

javascript - jquery清空父div不删除事件为什么

javascript - 将元素从一个列表复制到另一个

javascript - jQuery 更改下拉菜单调用 Web 服务来加载选项

php - 在 php 中从 mysqli 连接查询访问行

php - 提交成功提示

javascript - 根据选项选择隐藏或显示 div

javascript - 调用监听器内的函数时出现问题 (onClick)