Tôi đang làm việc trên màn hình và muốn truy xuất mã nguồn của một trang cụ thể.
Làm thế nào để đạt được điều này với javascript? Làm ơn giúp tôi.
Tôi đang làm việc trên màn hình và muốn truy xuất mã nguồn của một trang cụ thể.
Làm thế nào để đạt được điều này với javascript? Làm ơn giúp tôi.
$.ajaxcho các liên kết bên ngoài. đây là giải pháp - stackoverflow.com/a/18447625/2657601
Câu trả lời:
Cách đơn giản để bắt đầu, hãy thử jQuery
$("#links").load("/Main_Page #jq-p-Getting-Started li");
Thêm tại jQuery Docs
Một cách khác để quét màn hình theo cách có cấu trúc hơn nhiều là sử dụng YQL hoặc Ngôn ngữ truy vấn Yahoo. Nó sẽ trả về dữ liệu đã được cạo có cấu trúc là JSON hoặc xml.
ví dụ:
Hãy cạo stackoverflow.com
select * from html where url="http://stackoverflow.com"
sẽ cung cấp cho bạn một mảng JSON (tôi đã chọn tùy chọn đó) như thế này
"results": {
"body": {
"noscript": [
{
"div": {
"id": "noscript-padding"
}
},
{
"div": {
"id": "noscript-warning",
"p": "Stack Overflow works best with JavaScript enabled"
}
}
],
"div": [
{
"id": "notify-container"
},
{
"div": [
{
"id": "header",
"div": [
{
"id": "hlogo",
"a": {
"href": "/",
"img": {
"alt": "logo homepage",
"height": "70",
"src": "http://i.stackoverflow.com/Content/Img/stackoverflow-logo-250.png",
"width": "250"
}
……..
Cái hay của điều này là bạn có thể thực hiện các phép chiếu và các mệnh đề cuối cùng giúp bạn có được cấu trúc dữ liệu cóp nhặt và chỉ dữ liệu mà bạn cần (cuối cùng là băng thông ít hơn nhiều)
ví dụ:
select * from html where url="http://stackoverflow.com" and
xpath='//div/h3/a'
sẽ có em
"results": {
"a": [
{
"href": "/questions/414690/iphone-simulator-port-for-windows-closed",
"title": "Duplicate: Is any Windows simulator available to test iPhone application? as a hobbyist who cannot afford a mac, i set up a toolchain kit locally on cygwin to compile objecti … ",
"content": "iphone\n simulator port for windows [closed]"
},
{
"href": "/questions/680867/how-to-redirect-the-web-page-in-flex-application",
"title": "I have a button control ....i need another web page to be redirected while clicking that button .... how to do that ? Thanks ",
"content": "How\n to redirect the web page in flex application ?"
},
…..
Bây giờ để chỉ nhận được các câu hỏi, chúng tôi làm
select title from html where url="http://stackoverflow.com" and
xpath='//div/h3/a'
Lưu ý tiêu đề trong các phép chiếu
"results": {
"a": [
{
"title": "I don't want the function to be entered simultaneously by multiple threads, neither do I want it to be entered again when it has not returned yet. Is there any approach to achieve … "
},
{
"title": "I'm certain I'm doing something really obviously stupid, but I've been trying to figure it out for a few hours now and nothing is jumping out at me. I'm using a ModelForm so I can … "
},
{
"title": "when i am going through my project in IE only its showing errors A runtime error has occurred Do you wish to debug? Line 768 Error:Expected')' Is this is regarding any script er … "
},
{
"title": "I have a java batch file consisting of 4 execution steps written for analyzing any Java application. In one of the steps, I'm adding few libs in classpath that are needed for my co … "
},
{
……
Sau khi bạn viết truy vấn của mình, nó sẽ tạo một url cho bạn
trong trường hợp của chúng ta.
Vì vậy, cuối cùng bạn sẽ làm một cái gì đó như thế này
var titleList = $.getJSON(theAboveUrl);
và chơi với nó.
Đẹp phải không?
Javascript có thể được sử dụng, miễn là bạn lấy bất kỳ trang nào bạn đang truy cập thông qua proxy trên miền của bạn:
<html>
<head>
<script src="/js/jquery-1.3.2.js"></script>
</head>
<body>
<script>
$.get("www.mydomain.com/?url=www.google.com", function(response) {
alert(response)
});
</script>
</body>
Bạn chỉ cần sử dụng XmlHttp(AJAX) để truy cập URL được yêu cầu và phản hồi HTML từ URL sẽ có sẵn trong thuộc responseTexttính. Nếu đó không phải là cùng một tên miền, người dùng của bạn sẽ nhận được cảnh báo của trình duyệt nói rằng đại loại như "Trang này đang cố gắng truy cập một tên miền khác. Bạn có muốn cho phép điều này không?"
Sử dụng jquery
<html>
<head>
<script src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.js" ></script>
</head>
<body>
<script>
$.get("www.google.com", function(response) { alert(response) });
</script>
</body>
Tôi đã sử dụng ImportIO . Họ cho phép bạn yêu cầu HTML từ bất kỳ trang web nào nếu bạn thiết lập tài khoản với họ (miễn phí). Họ cho phép bạn thực hiện tới 50k yêu cầu mỗi năm. Tôi đã không mất thời gian cho họ để tìm một giải pháp thay thế, nhưng tôi chắc chắn rằng có một số.
Trong Javascript của bạn, về cơ bản bạn sẽ chỉ thực hiện một yêu cầu GET như sau:
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
jsontext = request.responseText;
alert(jsontext);
}
request.open("GET", "https://extraction.import.io/query/extractor/THE_PUBLIC_LINK_THEY_GIVE_YOU?_apikey=YOUR_KEY&url=YOUR_URL", true);
request.send();
Ghi chú bên lề: Tôi đã tìm thấy câu hỏi này trong khi nghiên cứu xem tôi cảm thấy giống với câu hỏi tương tự, vì vậy những người khác có thể thấy giải pháp của tôi hữu ích.
CẬP NHẬT: Tôi đã tạo một cái mới mà họ chỉ cho phép tôi sử dụng chưa đầy 48 giờ trước khi họ nói rằng tôi phải trả tiền cho dịch vụ. Có vẻ như họ đóng dự án của bạn khá nhanh ngay bây giờ nếu bạn không trả tiền. Tôi đã tạo dịch vụ tương tự của riêng mình với NodeJS và một thư viện có tên là NightmareJS. Bạn có thể xem hướng dẫn của họ ở đây và tạo công cụ cạo trang web của riêng bạn. Nó tương đối dễ dàng. Tôi chưa cố gắng thiết lập nó như một API mà tôi có thể đưa ra yêu cầu hoặc bất cứ điều gì.
Bạn có thể sử dụng tìm nạp :
const URL = 'https://www.sap.com/belgique/index.html';
fetch(URL)
.then(res => res.text())
.then(text => {
console.log(text);
})
.catch(err => console.log(err));
Bạn có thể tạo XmlHttpRequest và yêu cầu trang, sau đó sử dụng getResponseText () để lấy nội dung.
Bạn có thể sử dụng FileReader API để lấy tệp và khi chọn tệp, hãy đặt url của trang web của bạn vào hộp chọn. Sử dụng mã này:
function readFile() {
var f = document.getElementById("yourfileinput").files[0];
if (f) {
var r = new FileReader();
r.onload = function(e) {
alert(r.result);
}
r.readAsText(f);
} else {
alert("file could not be found")
}
}
}
Bạn có thể bỏ qua cùng-origin-policy bằng cách tạo tiện ích mở rộng trình duyệt hoặc thậm chí lưu tệp dưới dạng .hta trong Windows (Ứng dụng HTML).
Mặc dù có nhiều ý kiến trái chiều, tôi tin rằng có thể vượt qua yêu cầu về nguồn gốc tương tự với JavaScript đơn giản.
Tôi không khẳng định rằng thông tin sau là nguyên bản bởi vì tôi tin rằng tôi đã nhìn thấy điều gì đó tương tự ở nơi khác cách đây không lâu.
Tôi chỉ thử nghiệm điều này với Safari trên máy Mac.
Trình diễn sau đây tìm nạp trang trong thẻ cơ sở và di chuyển InternalHTML của nó sang một cửa sổ mới. Tập lệnh của tôi thêm các thẻ html nhưng với hầu hết các trình duyệt hiện đại, điều này có thể tránh được bằng cách sử dụng externalHTML.
<html>
<head>
<base href='http://apod.nasa.gov/apod/'>
<title>test</title>
<style>
body { margin: 0 }
textarea { outline: none; padding: 2em; width: 100%; height: 100% }
</style>
</head>
<body onload="w=window.open('#'); x=document.getElementById('t'); a='<html>\n'; b='\n</html>'; setTimeout('x.innerHTML=a+w.document.documentElement.innerHTML+b; w.close()',2000)">
<textarea id=t></textarea>
</body>
</html>
TypeError: undefined is not an object (evaluating 'w.document')
<script>
$.getJSON('http://www.whateverorigin.org/get?url=' + encodeURIComponent('hhttps://example.com/') + '&callback=?', function (data) {
alert(data.contents);
});
</script>
Bao gồm jQuery và sử dụng mã này để lấy HTML của trang web khác. Thay thế example.com bằng trang web của bạn .
Phương pháp này liên quan đến một máy chủ bên ngoài tìm nạp HTML các trang web và gửi nó cho bạn. :)
javascript:alert("Inspect Element On");
javascript:document.body.contentEditable = 'true';
document.designMode='on';
void 0;
javascript:alert(document.documentElement.innerHTML);
Đánh dấu điều này và kéo nó vào thanh dấu trang của bạn và nhấp vào nó khi bạn muốn chỉnh sửa và xem mã nguồn của các trang web hiện tại.
Trên linux
tải xuống slimerjs (slimerjs.org)
tải xuống firefox phiên bản 59
thêm biến môi trường này: export SLIMERJSLAUNCHER = / home / en / Letöltések / firefox59 / firefox / firefox
trên trang tải xuống slimerjs, hãy sử dụng chương trình .js này (./slomerjs program.js):
var page = require('webpage').create();
page.open(
'http://www.google.com/search?q=görény',
function()
{
page.render('goo2.pdf');
phantom.exit();
}
);
Sử dụng pdftotext để lấy văn bản trên trang.