PDA

View Full Version : سوال: چرا سورس سایت را از وب بروزر نمی توان استخراج کرد ؟



dele_ghamgin_2008
چهارشنبه 05 آذر 1393, 16:56 عصر
سلام . وقتی توی وب بروزر آدرس سایت گوگل به این (https://www.google.com/search?q=شلوار شیش جیب)نشانی را می زنم . نمی توانم سورسش را استخراج کنم . مشکل چیست ؟

این صفحه چون اولش با عکس شروع میشه . سورس سایت رو برام استخراج نمی کنه . دستوری که من استفاده می کنم برای استخراج سورس سایت به شرح زیر است :


private void Wb1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
richTxt1.Text = Wb1.DocumentText;

}



ولی اگر آدرس سایتی از گوگل را بزنم که دارای عکس نباشد ، سورس را به من می دهد . ولی اگر عکس دار باشد سورس را نمی دهد . چرا ؟

Mani_rf
چهارشنبه 05 آذر 1393, 16:59 عصر
از این کد استفاده کن :


HtmlElement elem;
if (webBrowser1.Document != null)
{
HtmlElementCollection elems = webBrowser1.Document.GetElementsByTagName("HTML");
if (elems.Count == 1)
{
elem = elems[0];
string pageSource = elem.OuterHtml;
richTxt1.Text = pageSource;
}
}

dele_ghamgin_2008
چهارشنبه 05 آذر 1393, 17:20 عصر
از این کد استفاده کن :


HtmlElement elem;
if (webBrowser1.Document != null)
{
HtmlElementCollection elems = webBrowser1.Document.GetElementsByTagName("HTML");
if (elems.Count == 1)
{
elem = elems[0];
string pageSource = elem.OuterHtml;
richTxt1.Text = pageSource;
}
}


از این هم استفاده کردم ولی باز هم نشد . اگر از طریق اینترنت آپشن قابلیت نمایش عکس را غیر فعال کنم درست میشه . ولی نمیخوام این کار بشه . یعنی میخوام با اینکه صفحه دارای عکس هست ، سورس سایت رو برام بیرون بکشه . این کد هم مثل کد خودم جواب نداد. راه دیگری هست ؟
من می خواهم حتماً از وب بروزر استفاده کنم . از کلاینت نمی خواهم چون عکس را نشان نمی دهد....

FastCode
چهارشنبه 05 آذر 1393, 23:07 عصر
آدرس وبسایت؟

مهرداد صفا
پنج شنبه 06 آذر 1393, 09:05 صبح
سلام . وقتی توی وب بروزر آدرس سایت گوگل به این (https://www.google.com/search?q=شلوار شیش جیب)نشانی را می زنم . نمی توانم سورسش را استخراج کنم . مشکل چیست ؟

این صفحه چون اولش با عکس شروع میشه . سورس سایت رو برام استخراج نمی کنه . دستوری که من استفاده می کنم برای استخراج سورس سایت به شرح زیر است :


private void Wb1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
richTxt1.Text = Wb1.DocumentText;

}



ولی اگر آدرس سایتی از گوگل را بزنم که دارای عکس نباشد ، سورس را به من می دهد . ولی اگر عکس دار باشد سورس را نمی دهد . چرا ؟

سلام.
1- خصوصیت DocumentText متنی رو بر میگردونه که در صفحه نمایش داده میشه و نه سورس صفحه. برای گرفتن سورس می تونید از روشی که جناب Mani_rf اشاره کردند استفاده کنید.
2- ممکنه رویداد DocumentCompleted برای هر صفحه ای که navigate می کنید، چندین بار اتفاق بیفته (با لود شدن هر تصویر و یا script و ...). شما باید چک کنید که اگر آدرس آرگومنت رویداد با آدرس مورد نظر شما یکی بود، اقدام به دریافت سورس کنید.

dele_ghamgin_2008
پنج شنبه 06 آذر 1393, 10:48 صبح
آدرس وبسایت؟

https://www.google.com/search?q=%D8%B4%D9%84%D9%88%D8%A7%D8%B1%20%D8%B4%D B%8C%D8%B4%20%D8%AC%DB%8C%D8%A8

dele_ghamgin_2008
پنج شنبه 06 آذر 1393, 10:52 صبح
سلام.
1- خصوصیت DocumentText متنی رو بر میگردونه که در صفحه نمایش داده میشه و نه سورس صفحه. برای گرفتن سورس می تونید از روشی که جناب Mani_rf اشاره کردند استفاده کنید.
2- ممکنه رویداد DocumentCompleted برای هر صفحه ای که navigate می کنید، چندین بار اتفاق بیفته (با لود شدن هر تصویر و یا script و ...). شما باید چک کنید که اگر آدرس آرگومنت رویداد با آدرس مورد نظر شما یکی بود، اقدام به دریافت سورس کنید.

1- از کد ایشان هم بهره گرفتم ولی عمل نکرد .
2- تا حدودی متوجه منظوران شدم ولی نه دقیق ، خب این دستور شرطی را در کدام بخش باید بنویسم تا چک کند ؟ یا دستور را برابر چی بنویسم ؟ مثلاً بنویسم اگر url وب بروزر برابر آدرس اینترنتی فلان بود بهم سورس را بدهد ؟

مهرداد صفا
پنج شنبه 06 آذر 1393, 12:50 عصر
سلام.
داخل رویداد DocumentCompleted چک کنید که مشخصه Uri آرگومنت با آدرس شما همخوانی دارد یا نه:


if(e.Uri==...)
//get the source


البته گاهی ممکنه آدرس مقصد کمی با آدرس شما متفاوت باشه که باید موردی بررسی کنید. برای مثال اگر شما به آدرس:


http://www.google.com"
برید، ممکنه سر از:


"https://www.google.com/...
در بیارید. ول در کل همیشه ابتدا تصاویر و ... و در آخر کل صفحه دانلود میشه.
نمونه کد:


//بسم الله الرحمن الرحیم
//اللهم صل علی محمد و آل محمد

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
string url = "http://barnamenevis.org/";
public Form1()
{
InitializeComponent();
webBrowser1.Navigate(url);
}

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (e.Url.OriginalString == url)
MessageBox.Show(new System.IO.StreamReader(webBrowser1.DocumentStream) .ReadToEnd());


}
}
}

dele_ghamgin_2008
پنج شنبه 06 آذر 1393, 13:46 عصر
سلام.
داخل رویداد DocumentCompleted چک کنید که مشخصه Uri آرگومنت با آدرس شما همخوانی دارد یا نه:


if(e.Uri==...)
//get the source


البته گاهی ممکنه آدرس مقصد کمی با آدرس شما متفاوت باشه که باید موردی بررسی کنید. برای مثال اگر شما به آدرس:


http://www.google.com"
برید، ممکنه سر از:


"https://www.google.com/...
در بیارید. ول در کل همیشه ابتدا تصاویر و ... و در آخر کل صفحه دانلود میشه.
نمونه کد:


//بسم الله الرحمن الرحیم
//اللهم صل علی محمد و آل محمد

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
string url = "http://barnamenevis.org/";
public Form1()
{
InitializeComponent();
webBrowser1.Navigate(url);
}

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (e.Url.OriginalString == url)
MessageBox.Show(new System.IO.StreamReader(webBrowser1.DocumentStream) .ReadToEnd());


}
}
}


من سایت های مختلفی دارم قرار نیست لینکم ثابت باشه . لذا اومدم دستور شما رو به این شکل تغییر دادم ولی باز هم عمل نکرد :

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
if (e.Url.OriginalString.StartsWith("http"))
MessageBox.Show(new System.IO.StreamReader(webBrowser1.DocumentStream) .ReadToEnd());}

مشکل من با سایت برنامه نویس و سایت های دیگر نیست . این مشکل فقط در گوگل رخ می دهد.
لینک سایتی که می خواهم سورسش خارج شود = https://www.google.com/search?site=&source=hp&q=موز

FastCode
جمعه 07 آذر 1393, 09:44 صبح
با سایت های https دیگه هم میتونید آزامایش کنید؟

dele_ghamgin_2008
جمعه 07 آذر 1393, 15:30 عصر
با سایت های https دیگه هم میتونید آزامایش کنید؟

واقعیت امر کار من فقط با گوگل هست . سایت های دیگری که عکس دار هستند مشکلی ندارند . به عنوان مثال وقتی لینک زیر که مربوط به یاهو هست رو میزنم سورس رو بهم میده و مشکلی نداره . لینک زیر دارای عکس هم هست و https هم هست مثل گوگل

https://search.yahoo.com/search;_ylt=AtknB31BFtfd8LDkQctZ0ytkN8J_?p=%D9%85% D9%88%D8%B2&toggle=1&cop=mss&ei=UTF-8&fr=yfp-t-402&fp=1