Je travaille sur le screen scraping, et je veux récupérer le code source d'une page particulière.
Comment réaliser cela avec javascript ? Veuillez m'aider.
Je travaille sur le screen scraping, et je veux récupérer le code source d'une page particulière.
Comment réaliser cela avec javascript ? Veuillez m'aider.
Une façon simple de commencer, essayez jQuery
$("#links").load("/Main_Page #jq-p-Getting-Started li");
Plus à Docs jQuery
Une autre façon de faire du screen scraping d'une manière beaucoup plus structurée est d'utiliser YQL ou Yahoo Query Language. Il renverra les données extraites structurées en JSON ou en xml.
par exemple
Examinons stackoverflow.com.
select * from html where url="http://stackoverflow.com"
vous donnera un tableau JSON (j'ai choisi cette option) comme ceci
"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"
}
……..
L'avantage de ce système est que vous pouvez faire les projections et où qui, en fin de compte, vous permet d'obtenir des données scannées structurées et seulement les données ce dont vous avez besoin (beaucoup moins de bande passante sur le fil au final)
Par exemple
select * from html where url="http://stackoverflow.com" and
xpath='//div/h3/a'
vous obtiendra
"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 ?"
},
…..
Maintenant, pour obtenir uniquement les questions, nous faisons un
select title from html where url="http://stackoverflow.com" and
xpath='//div/h3/a'
Notez le titre dans les projections
"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 … "
},
{
……
Une fois que vous avez écrit votre requête, il génère une url pour vous.
dans notre cas.
Au bout du compte, on finit par faire quelque chose comme ça
var titleList = $.getJSON(theAboveUrl);
et jouer avec.
Magnifique n'est-ce pas ?
Brillant, surtout pour l'allusion à la solution du pauvre chez Yahoo qui élimine le besoin d'un proxy pour récupérer les données. Merci ! J'ai pris la liberté de corriger le dernier lien de démonstration vers query.yahooapis.com : il manquait un signe % dans l'encodage url. Cool que cela fonctionne encore !
Une idée de la façon dont on peut récupérer l'image et la méta-description d'un site web ? amazon.in/Xiaomi-Redmi-4A-Grey-16GB/dp/ ?
Query.yahooapis a été retiré à partir de janvier 2019. Ça a l'air vraiment chouette, dommage qu'on ne puisse plus l'utiliser maintenant. Voir le tweet ici : twitter.com/ydn/status/1079785891558653952?ref_src=twsrc%5Etfw
C'est vraiment intéressant. Je suppose qu'il y a du code à installer sur le serveur pour que cela se produise ?
Vous pourriez simplement utiliser XmlHttp
(AJAX) pour frapper l'URL requise et la réponse HTML de l'URL sera disponible dans l'application responseText
propriété. S'il ne s'agit pas du même domaine, vos utilisateurs recevront une alerte du navigateur indiquant quelque chose comme "Cette page tente d'accéder à un domaine différent. Voulez-vous l'autoriser ?"
Vous ne pouvez pas demander une page en dehors de votre domaine de cette manière, vous devez le faire via un proxy, par exemple $.get('). mondomaine.com/?url=www.google.com' )
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
1 votes
Voici une page similaire qui peut vous apporter une réponse car elle résout mon problème d'obtention de la source de la page HTML. stackoverflow.com/questions/1367587/javascript-page-source-code
7 votes
@mikenvck Pourquoi avez-vous mentionné PHP alors que la question portait sur JavaScript ? Les réponses ci-dessous montrent comment faire cela avec JavaScript.
1 votes
Pour obtenir la source d'un lien, vous devrez peut-être utiliser
$.ajax
pour les liens externes. voici la solution - stackoverflow.com/a/18447625/26576012 votes
Pas une seule réponse n'était en Javascript natif, toutes étaient basées sur jquery.
2 votes
JQuery est du JavaScript natif. C'est juste du JavaScript que vous pouvez copier depuis jquery.com plutôt que depuis stackoverflow.com.