我正在尝试通过搜索通用 URL 字符串(如下所示)从教育网站 Udemy 中删除内容(例如课程缩略图、价格等)。该站点的源代码有一个类名为“ud-app-loader ud-component--search--search”的部分。下面提供了它的片段。
废弃数据的网站(搜索查询是 Selenium):Udemy 搜索可用的 selenium 课程
<div class="ud-main-content">
<div class="ud-app-loader ud-component--search--search" data-module-id="search" data-module-args="{"subsCollectionIds":null,"showSRPRefundNotice":false,"showUserEnrollmentProgress":false,"showCodingExerciseCount":false,"enableLabsInPersonalPlan":false,"enableLectureBottomDrawerOnSRP":false,"showCodingExercisesBadge":false,"enableLectureDiscoveryUnitInUb":false,"disableRelatedTopicsOnSRP":false,"enableActiveLearningElementIcons":false}"></div>
</div>
但是相同的
<div-class="popper-module--popper--2BpLn">
相关联。
现在,由于我对前端技术不太熟悉,但我假设(在阅读了一篇关于 stackoverflow 的类似文章后,使用 BeautifulSoup 抓取“data-module-group”)数据是通过 AJAX 获取的电话。但我什至无法在页面中找到 AJAX URL。
类似问题:Extract details from
本来打算用Jsoup来抓取内容,后来摸索Jsoup无法获取这样的异步调用。它只是一个 HTML 解析器,所以我现在正在使用 HTMLUnit。
我的代码实现在这里帮不上什么忙,不过还是加进去,以供参考。
public class Scraper {
public static void getData(String courseName,String sortType) throws Exception {
String URL="https://www.udemy.com/courses/search/?lang=en&price=price-paid&q="+courseName+
"&ratings=4.5&sort=relevance&sort="+sortType+"&src=ukw";
WebClient client=new WebClient(BrowserVersion.FIREFOX);
client.getOptions().setJavaScriptEnabled(true);
client.getOptions().setCssEnabled(true);
client.getOptions().setThrowExceptionOnScriptError(false);
client.setAjaxController(new NicelyResynchronizingAjaxController());
HtmlPage page=client.getPage(URL);
client.waitForBackgroundJavaScript(50000);
System.out.println(page.asXml());
}
}
我已经在上面的代码中使用预定义的方法打印了页面但没有过滤元素,因为我可以稍后再做。我的首要任务是首先获得所需的 HTML 页面。
我的疑惑是:
如果有人可以帮助甚至指导我获得解决方案,我会很高兴。
-Abhay.
所以我听说您正尝试使用 HTMLUnit 从 Udemy 的 Selenium 课程搜索结果页面中抓取数据,但您很难找到正确的信息。可能是因为数据是通过 AJAX 调用动态加载的,所以您需要找到负责进行这些调用的 URL。
以下是您可以尝试的方法:在 Udemy 上执行搜索时,使用浏览器中的开发人员工具检查网络请求。查找包含所需数据的请求并检查 URL 以查看是否可以调整任何参数以提取更多数据。
找到 AJAX 源 URL 后,您可以使用 HTMLUnit 模拟 AJAX 请求并从响应中提取所需信息。
如果您仍然卡住,可能是数据正在使用不同的机制加载。在这种情况下,您可能需要探索其他抓取工具或技术来获取您需要的数据。
所以我听说您正尝试使用 HTMLUnit 从 Udemy 的 Selenium 课程搜索结果页面中抓取数据,但您很难找到正确的信息。可能是因为数据是通过 AJAX 调用动态加载的,所以您需要找到负责进行这些调用的 URL。
以下是您可以尝试的方法:在 Udemy 上执行搜索时,使用浏览器中的开发人员工具检查网络请求。查找包含所需数据的请求并检查 URL 以查看是否可以调整任何参数以提取更多数据。
找到 AJAX 源 URL 后,您可以使用 HTMLUnit 模拟 AJAX 请求并从响应中提取所需信息。
如果您仍然卡住,可能是数据正在使用不同的机制加载。在这种情况下,您可能需要探索其他抓取工具或技术来获取您需要的数据。