[英]Get Original URL instead of base64 url from src attribute
我正在尝试从该站点获取数据: https://balkangreenenergynews.com/country/romania/
问题是当我尝试通过“src”属性提取图像 url(image_link) 时,它返回 base64 格式的 URL。
我在下面给出了 Output:
[{link:
'https://balkangreenenergynews.com/...nsson/',
image_link:
'data:image/svg+xml;base64,PHN2ZyB4...3ZnPg==',
lead_text:
'Distribution ... farm.',
time: '29 July 2021',
author: '' }, ...]
代码:
const scraperObject = {
url: 'https://balkangreenenergynews.com/country/romania/',
async scraper(browser){
let page = await browser.newPage();
await page.goto(this.url)
.catch(error => console.error(error));
try {
await page.waitForSelector("div.four-boxes.multi-boxes", { visible: true });
//console.info("Country News Page loaded");
page.on("console", msg =>
msg.type() === "error"
? console.error(msg.text())
: console.info(msg.text())
);
let data = await page.evaluate(() => {
const articles = document.querySelectorAll("div.bn-box");
const textContent = elem => (elem ? elem.textContent.trim() : ""); // helper function
const articleArray = [];
//let element = await page.$('your selector')
//await element.evaluate(el => el.textContent)
articles.forEach(article => {
//console.log(article.querySelector("div.bn-box-img > a img").getAttribute("src"))
articleArray.push({
title:
textContent(article.querySelector("div.bn-box > a > h3")) || "",
link: article.querySelector("div.bn-box > a")
? article.querySelector("div.bn-box > a").getAttribute("href")
: "",
image_link: article.querySelector("div.bn-box-img > a > img")
? article.querySelector("div.bn-box-img > a > img").getAttribute("src")
: "",
lead_text:
textContent(article.querySelector("div.bn-box > p")).split(' ').slice(4).join(' ') ||
"",
time: textContent(article.querySelector("p > strong")) ||
"",
author: ""
//textContent(article.querySelector(".entry-author a")) || ""
});
});
//console.log(articles);
//return;
return articleArray;
});
console.log(data)
} catch (error) {
console.log(":(");
//console.error("No articles found for " + country.slug + error);
}
}}
当我将这些 URL 直接保存到数据库时,如何获得特定的 URL?
我能够复制您的代码:
根据以下研究,木偶正在改变真正的html 。
我直接在浏览器控制台上尝试了你的代码,我得到了第一篇文章的 html:
const articles = document.querySelectorAll("div.bn-box");
articles[0].innerHTML
但是当我运行你的 puppeter 代码打印第一篇文章( console.log(articles[0].innerHTML);
)时,同一篇文章的 html 发生了变化:
我在互联网上没有找到任何关于这种木偶行为的信息
如果您单击某篇文章,在加载后检查我会看到:
我不知道,但原始页面可能会根据客户端更改响应 html:
您可以使用此启动器来使用 selenium 代替 puppeter
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.