我正在使用node和cheerio抓取bing搜索结果。我需要从两个具有不同ID的列表中获取所有href值。
$("a", ["#b_content", "#b_context"]).each((index, element) => {
const href = $(element).attr("href");
links.push(href);
});
请参阅附件中的html屏幕截图。html
Update2:我当时想忽略整个标签,但是我在这里和其他地方找到的解决方案都忽略了该标签。它下面的任何其他
我找到了解决方法。我可以获取具有其他类名的
$(.b_algo)
或$(.b_ans)
。但是,如何获取其他两个具有多个相关类的$(.b_ans b_mop)
之类的东西不起作用。 $("li[class=b_ans b_mop")
也没有。
答案 0 :(得分:2)
尝试一下,
$("#b_content", "#b_context").each(function(i, elem) {
array[i] = {
a: $(this).find("a").attr("href")
};
});`
要选择类别“ b_pag”以外的“ li”,请使用li:not( .b_pag )
答案 1 :(得分:1)
尝试这个
$(".b_content li[class!='b_pag']").find("a").each((index, element) => {
const href = $(element).attr("href");
console.log(href);
});
如果要忽略类,请使用带有相应标记的属性选择器,例如 li [class!='b_pag']
答案 2 :(得分:1)
尝试改用Bing Web搜索API:https://azure.microsoft.com/en-us/services/cognitive-services/bing-web-search-api/
这是获取必应搜索结果的合法且更好的方法。如果您无需进行大量搜索,则可以注册此API的免费层。您还可以使用加入Azure时收到的Azure免费积分。