Pereiti prie turinio

Rekomenduojami pranešimai

Kas toks web scraping?

Tai informacijos automatiskas surinkimas su programeles(arba web service) pagalba. Programele vadinasi parseris arba web scraperis.

 

Kam reikia parseriai?

Parseriai skirti tam, kad paimti is tinklapiu su vienodu turiniu content. Pvz, galima visas naujienos vienoje vietoje skaityti arba paleisti ant PHP hosting (su Crone) programele kuri skaiciuotu oraus metini vidurki arba surinkti dominancia informacija savo tikslams. Irgi galima sukaupti prekiu eshopams.

 

Kokia kalba rasyti?

Paprasciausia su PHP. Po to su C# arba Java. Galima su Python. Jeigu nezinote nei vienos kalbos, galima su Yahoo pipes parasyti.

 

Ar yra pavyzdys?

Taip, prasom perziureti sita, sita pranesima.

Redagavo ZTG
Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 2 mėnesių...

Pritariu Kerniui, man šis dalykas pravertė laikantis teises, buvau pasidaręs, kad kai tik atsiranda laisva vieta man tinkančiu laiku ir man tinkančiame mieste gaučiau sms žinutę taip vietoj to, kad laukčiau mėnesi laiko radau vieta po keleto dienų.(Viskas vyko prieš pradedant išduoti laikinas teisias)

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 2 mėnesių...

tiems kas domisi webscrapingu per PHP yra geras tutorial http://net.tutsplus.com/tutorials/php/html-parsing-and-screen-scraping-with-the-simple-html-dom-library/

ir man asmeniskai patogiausia php htmldom parser klase http://sourceforge.net/projects/simplehtmldom/files/

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 3 savaičių...

Tai labai galingas dalykas :)

 

Paskutinį kartą web scraping naudojau rašydamas PHP skriptą, kuris už mane ieškotų pigių skrydžių Ryanair svetainėje ir rastų galutines kainas (su visais mokesčiais). Ryanair turi cookies apsaugą ir perduoda duomenis AJAX (javascript) pagalba, tad reikėjo skirti laiko gilinantis į pačios svetainės sistemą - kaip viskas veikia. Galiausiai turėjau veikiantį skriptą, kuris man praneša apie pigiausius skrydžius (po 10-20 litų) - ir tai padėjo gerokai sutaupyti - esu tą pačią dieną skridęs per Europą maršrutu Portugalija - Norvegija - Latvija už iš viso 35 litus (du bilietai po 5 eurus).

 

Vis dar veikia tavo skriptas? Ieskojau pats internete butent tokio dalyko, bet nepavyko nieko rast. Raso, kad Ryanair "screen-scraping safe" :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose

kazka panasaus esu pakures, aisku cia ne taip tobulai kaip rase kolega, bet faktas - kad siurbt galima:

http://pigus-ryanair-skrydziai.rds.lt/ pigūs skrydžių bilietai

Vis dar veikia tavo skriptas? Ieskojau pats internete butent tokio dalyko, bet nepavyko nieko rast. Raso, kad Ryanair "screen-scraping safe" :D

Redagavo metodman
Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 2 savaičių...
  • po 3 mėnesių...

Mano screen scraping pavyzdys,

vienu metu teko daug kariautu su blogais websaitais,

sitas skriptas eina i saitus reportuojancius blogus IP, surenka is ju IP adresus, ismeta dublikatus ir pateikia man reikalingu formatu (netwitness).

 

#!/usr/bin/env python
import urllib2, re, os
count = 0
IPlist = ""

os.system("clear")

f = urllib2.urlopen("http://www.malwaredomainlist.com/update.php")
s = f.read()
m = re.findall("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",s)

mylist = list(set(m))

for match in mylist:
       IPlist = match + "," + IPlist   

print "\nNewest reported IPs on the malwaredomainlist.com:\n\nip.dst = " + IPlist[:-1] + "\n"

IPlist = ""

f = urllib2.urlopen("http://www.projecthoneypot.org/list_of_ips.php")
s = f.read()
m = re.findall("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",s)

mylist = list(set(m))

for match in mylist:
       IPlist = match + "," + IPlist   

print "\nNewest reported IPs on the projecthoneypot.org:\n\nip.dst = " + IPlist[:-1] + "\n"

IPlist = ""

f = urllib2.urlopen("http://www.malwaredomainlist.com/hostslist/ip.txt")
s = f.read()
m = re.findall("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",s)

mylist = list(set(m))

print "All reported IPs on the malwaredomainlist.com:\n"

for match in mylist:
       if(count<300):  
               IPlist = match + "," + IPlist
       else:
               print "ip.dst = "+ IPlist[:-1]+ "\n"
               IPlist = ""
               count=0
       count+=1

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 2 savaičių...
  • po 2 mėnesių...

taip, su C#: su OpenPOP library atsiunti laisku body's, ir pagal xpath string'a gauni rezultatus kurios reikejo butu gauti. o paskui gali issaugoti kaip XML byla.

 

Ačiū už paaiškinimą, bet esu žalias programavime. Mane tik domina darbo sudėtingumas ir preminali kaina. :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 2 savaičių...

Ačiū už paaiškinimą, bet esu žalias programavime. Mane tik domina darbo sudėtingumas ir preminali kaina. :)

Susisiekaiu su Daruz ir parasiau jam skripta kuris tikrina pasta, bet pasirodo, kad hostgator blokuoja prisijungimus prie google mail. Galvoju taip ir su kitais hostingais. Kam rekia stai skriptas:

index.php

<?php
session_start(); 

if(isset($_SESSION['user'])) {

	header("Location: admin/index.php");

} else {
	echo "<form action=handler.php method=post>
Vartotojo vardas: <input type=text name=name value=><br>  
Slaptazodis: <input type=password name=password value=><br>  
<input type=submit value=Siusti>  
</form>";
}
?>

handler.php

<?php 
include('admin/config.php');
$conf = new config;

$dblocation = $conf->dbloc;  
$dbname = $conf->dbname;  
$dbuser = $conf->dbuser;  
$dbpasswd = $conf->dbpasswd;  

$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);  
if (!$dbcnx) {  
	echo( "<P>DB serveris nepasiekiamas.</P>" );  
	exit();  
}  
if (! @mysql_select_db($dbname,$dbcnx) ) {  
	echo( "<P>DB nepasiekiama.</P>" );  
	exit();  
}  
$query = "SELECT password FROM users WHERE name='".$_POST['name']."'";  
$nme = mysql_query($query);  
if(!$nme) {  
	echo mysql_error(); 
	echo "Uzklausa neivykdyta";  
	exit();  
}  
if(mysql_num_rows($nme) > 0) {    
	$password = mysql_result($nme, 0);  
	if ($_POST['password'] == $password) { 
		if(session_start()) { 
			$_SESSION['user'] = $_POST['name']; 
			$_SESSION['password'] = $_POST['password']; 
			echo "<HTML><HEAD> 
		         <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'> 
		         </HEAD><body>"; 
		} 
	} else {  
		echo "Identifikavimo klaida: neteisingas slaptazodis";  
		exit();  
	}  
} else {  
	echo "Identifikavimo klaida: vartotojas neregistruotas";  
	exit();  
}  
?>

logout.php

<?php
 session_start();
 unset($_SESSION['username']); 
 session_destroy();
 echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'></HEAD><body>"; 
?>

admin/checker.php

<?php
require("class-IXR.php");
include('../admin/config.php');
$conf = new config;
$client = new IXR_Client($conf->adresas.'/xmlrpc.php');
$USER = $conf->name;
$PASS = $conf->password;
$mbox = imap_open("{imap.gmail.com:993/imap/ssl}INBOX", $conf->email, $conf->gpassword) or die("can't connect: " . imap_last_error());
$emails = imap_search($mbox,'ALL');

$dblocation = $conf->dbloc;  
$dbname = $conf->dbname;  
$dbuser = $conf->dbuser;  
$dbpasswd = $conf->dbpasswd;     
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);  
if (!$dbcnx) {  
	echo( "<P>DB serveris nepasiekiamas.</P>" );  
	exit();  
}  
if (! @mysql_select_db($dbname,$dbcnx) ) {  
	echo( "<P>DB nepasiekiama.</P>" );  
	exit();  
}  	


if($emails) {
	rsort($emails);

	foreach($emails as $email_number) {
		$output1 = '';
		$output2 = '';
		$output3 = '';

		$overview = imap_fetch_overview($mbox,$email_number,0);
		$message = imap_fetchbody($mbox,$email_number,2);
		$pos1 = strpos($message, $conf->pos1);
		$pos2 = strpos($message, $conf->pos2);

		$output1.= $overview[0]->subject;
		$output2.= $overview[0]->from;
		$output3.= $overview[0]->date.'<br>';

		$mes = substr($message, $pos1, $pos2);
		if($mes) {
			$mess = quoted_printable_decode($mes);

			if (strpos($output2, $conf->emx) !== false)
			{
				$query = "SELECT subject FROM system_mail_list WHERE date='".$overview[0]->date."'";
				$nme = mysql_query($query);  
				if(!$nme) {  
					echo mysql_error(); 
					echo "Uzklausa neivykdyta";  
					exit();  
				}  
				if(mysql_num_rows($nme) > 0) {    
					$subject = mysql_result($nme, 0);  
					if ($overview[0]->subject !== $subject) {
						$query2 = "INSERT INTO system_mail_list VALUES (NULL, '".$overview[0]->subject."', '".$overview[0]->from."', '".$overview[0]->date."');";
						$nme2 = mysql_query($query2);  
						if(!$nme2) {  
							echo mysql_error(); 
							echo "Uzklausa neivykdyta";  
							exit();  
						}

						$output3.= str_replace('</div><br>','',$mess);    
						$content['title'] = $output1;
						$content['categories'] = array($conf->cat);
						$content['description'] = utf8_encode($output3);
						$content['custom_fields'] = array( array('key' => 'my_custom_fied','value'=>'yes') );
						$content['mt_keywords'] = array($conf->tag);

						if (!$client->query('metaWeblog.newPost','', $USER,$PASS, $content, true)) 
						{
							die( 'Ivyko publikavimo klaida' . $client->getErrorCode() ." : ". $client->getErrorMessage());  
						}
						$ID =  $client->getResponse();
						if($ID){
							header("Location: ../admin/index.php");				
						}  					
					}
				} else {
					$query2 = "INSERT INTO system_mail_list VALUES (NULL, '".$overview[0]->subject."', '".$overview[0]->from."', '".$overview[0]->date."');";
					$nme2 = mysql_query($query2);  
					if(!$nme2) {  
						echo mysql_error(); 
						echo "Uzklausa neivykdyta";  
						exit();  
					}
					$output3.= str_replace('</div><br>','',$mess);     
					$content['title'] = $output1;
					$content['categories'] = array($conf->cat);
					$content['description'] = utf8_encode($output3);
					$content['custom_fields'] = array( array('key' => 'my_custom_fied','value'=>'yes') );
					$content['mt_keywords'] = array($conf->tag);

					if (!$client->query('metaWeblog.newPost','', $USER,$PASS, $content, true)) 
					{
						die( 'Ivyko publikavimo klaida' . $client->getErrorCode() ." : ". $client->getErrorMessage());  
					}
					$ID =  $client->getResponse();
					if($ID){
						header("Location: ../admin/index.php");				
					}
				}			
			}
		}
	}
}

imap_close($mbox);
?>

admin/class-IXR.php (is wordpress imamas)

admin/config.php

<?php
class config
{
  var $adresas = 'http://.lt';
  var $name = 'admin';
  var $password = '';
  var $email = '@gmail.com';
  var $gpassword = '';
  var $emx = '@mail.com';
  var $pos1 = '<div marginwidth=3D"0" marginheight=3D"0">';
  var $pos2 = '</div><br>';
  var $cat = 'NewCategory';
  var $tag = 'from e-mail';
  /*MySQL db duomenys*/
  var $dbloc = 'localhost';
  var $dbname = 'db';
  var $dbuser = 'user';
  var $dbpasswd = '';
}
?>

admin/handler.php

<?php 
session_start();
if ($_SESSION['user'] == 'admin') {
	updateConfig('$adresas', $_POST['adresas']);
	updateConfig('$name', $_POST['name']);
	updateConfig('$password', $_POST['password']);
	updateConfig('$email', $_POST['email']);
	updateConfig('$gpassword', $_POST['gpassword']);
	updateConfig('$emx', $_POST['emx']);
	updateConfig('$pos1', stripslashes($_POST['pos1']));
	updateConfig('$pos2', stripslashes($_POST['pos2']));
	updateConfig('$cat', $_POST['cat']);
	updateConfig('$tag', $_POST['tag']);
	updateConfig('$dbloc', $_POST['dbloc']);
	updateConfig('$dbname', $_POST['dbname']);
	updateConfig('$dbuser', $_POST['dbuser']);
	updateConfig('$dbpasswd', $_POST['dbpasswd']);
	echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'></HEAD><body>"; 
} else {
	echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'></HEAD><body>";
	}		
function updateConfig($parameter, $value)
{	
	$file = file_get_contents('config.php');
	$fileLines = explode("\n", $file);
	for($i=0;$i<count($fileLines);$i++)
	{
		if(strstr($fileLines[$i], $parameter))
		{
			$fileLines[$i] = "   var " . $parameter . " = '" . $value . "';";
		}
	}
	$file = implode("\n", $fileLines);
	file_put_contents('config.php', $file);
}
?>

admin/index.php

<?php
session_start();
if ($_SESSION['user'] == 'admin') {

	include('../admin/config.php');

	if(isset($_SESSION['user'])) echo "Sveiki, <a href='../admin/index.php'>".$_SESSION['user']."</a>! | <a href='../admin/checker.php'>tikrinti pasta dabar</a> | <a href='../admin/list.php'>rodyti visus atsiustus laiskus</a> | <a href='../logout.php'>atsijungti</a>";

	$conf = new config;


	echo '<form action=handler.php method=post><TABLE BORDER=0 CELLSPACING=2 CELLPADDING=0>
	<TR>
	<TD ALIGN="left" width="200">Wordpress svetaines adresas:</TD>
	<TD ALIGN="left" width="200"><input type=text name=adresas value="'.$conf->adresas.'"></TD>
	<TD ALIGN="left" width="200">*pvz, http://svetaine.net</TD>
	</TR>
	<TR>
	<TD ALIGN="left" width="200">Wordpress vartotojo vardas:</TD>
	<TD ALIGN="left" width="200"><input type=text name=name value="'.$conf->name.'"></TD>
	<TD ALIGN="left" width="200">*pvz, admin</TD>
	</TR>
	<TR>
	<TD ALIGN="left" width="200">Wordpress vartotojo slaptazodis:</TD>
	<TD ALIGN="left" width="200"><input type=password name=password value="'.$conf->password.'"></TD>
	<TD ALIGN="left" width="200">*pvz, 123qwe</TD>
	</TR>
	<TR>
	<TD ALIGN="left" width="200">GMAIL pasto adresas:</TD>
	<TD ALIGN="left" width="200"><input type=text name=email value="'.$conf->email.'"></TD>
	<TD ALIGN="left" width="200">*pvz, [email protected]</TD>
	</TR>
	<TR>
	<TD ALIGN="left" width="200">GMAIL pasto slaptazodis:</TD>
	<TD ALIGN="left" width="200"><input type=password name=gpassword value="'.$conf->gpassword.'"></TD>
	<TD ALIGN="left" width="200">*pvz, 1234qwer</TD>
	</TR>
	<TR>
	<TD ALIGN="left" width="200">Siuntejo pasto adresas:</TD>
	<TD ALIGN="left" width="200"><input type=text name=emx value="'.$conf->emx.'"></TD>
	<TD ALIGN="left" width="200">*pvz, [email protected]</TD>
	</TR>
	<TR>
	<TD ALIGN="left" width="200">Laisko pradzia:</TD>
	<TD ALIGN="left" width="200"><input type=text name=pos1 value="'.htmlspecialchars($conf->pos1).'"></TD>
	<TD ALIGN="left" width="200">*pvz, '.htmlspecialchars('<div><div>').'</TD>
	</TR>
	<TR>
	<TD ALIGN="left" width="200">Laisko pabaiga:</TD>
	<TD ALIGN="left" width="200"><input type=text name=pos2 value="'.htmlspecialchars($conf->pos2).'"></TD>
	<TD ALIGN="left" width="200">*pvz, '.htmlspecialchars('</div></div>').'</TD>
	</TR>
	<TR>
	<TD ALIGN="left" width="200">Wordpress kategorija:</TD>
	<TD ALIGN="left" width="200"><input type=text name=cat value="'.$conf->cat.'"> </TD>
	<TD ALIGN="left" width="200">*pvz, NewCategory</TD>
	</TR>
	<TR>
	<TD ALIGN="left" width="200">Wordpress iraso TAG:</TD>
	<TD ALIGN="left" width="200"><input type=text name=tag value="'.$conf->tag.'"></TD>
	<TD ALIGN="left" width="200">*pvz, from email</TD>
	</TR>
	<TR>
	<TD ALIGN="left" width="200">MySQL DB adresas:</TD>
	<TD ALIGN="left" width="200"><input type=text name=dbloc value="'.$conf->dbloc.'"></TD>
	<TD ALIGN="left" width="200">*pvz, localhost</TD>
	</TR>
	<TR>
	<TD ALIGN="left" width="200">MySQL DB pavadinimas:</TD>
	<TD ALIGN="left" width="200"><input type=text name=dbname value="'.$conf->dbname.'"></TD>
	<TD ALIGN="left" width="200">*pvz, db1</TD>
	</TR>
	<TR>
	<TD ALIGN="left" width="200">MySQL DB vartotojas:</TD>
	<TD ALIGN="left" width="200"><input type=text name=dbuser value="'.$conf->dbuser.'"></TD>
	<TD ALIGN="left" width="200">*pvz, root</TD>
	</TR>
	<TR>
	<TD ALIGN="left" width="200">MySQL DB slaptazodis:</TD>
	<TD ALIGN="left" width="200"><input type=text name=dbpasswd value="'.$conf->dbpasswd.'"></TD>
	<TD ALIGN="left" width="200">*pvz, 123qwe</TD>
	</TR>
	<TR>
	<TD ALIGN="left" width="200"><input type=submit value=Siusti></TD>
	<TD ALIGN="left" width="200"></TD>
	<TD ALIGN="left" width="200"></TD>
	</TR>
	</TABLE></form>';
} else {
	echo "Tu neprisijungtas matyti sita puslapi!";
	}
?>

admin/list.php

<?php
session_start();
if ($_SESSION['user'] == 'admin') {
	if(isset($_SESSION['user'])) echo "Sveiki, <a href='../admin/index.php'>".$_SESSION['user']."</a>! | <a href='../admin/checker.php'>tikrinti pasta dabar</a> | <a href='../admin/list.php'>rodyti visus atsiustus laiskus</a> | <a href='../logout.php'>atsijungti</a>";
	include('../admin/config.php');
	$conf = new config;

	$dblocation = $conf->dbloc;  
	$dbname = $conf->dbname;  
	$dbuser = $conf->dbuser;  
	$dbpasswd = $conf->dbpasswd;  

	$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);  
	if (!$dbcnx) {  
		echo( "<P>DB serveris nepasiekiamas.</P>" );  
		exit();  
	}  
	if (! @mysql_select_db($dbname,$dbcnx) ) {  
		echo( "<P>DB nepasiekiama.</P>" );  
		exit();  
	}  
	$query = "SELECT subject, email_from, date FROM system_mail_list";  
	$nme = mysql_query($query);  
	if(!$nme) {  
		echo mysql_error(); 
		echo "Uzklausa neivykdyta";  
		exit();  
	}
	$x = 0;
	print "<br> Gauti laiskai:";
	print "<table>\n";
	print "<tr>\n<td>Subject</td><td>From</td><td>Date</td>\n</tr>\n";
	while ($x < mysql_numrows($nme)) {   
		$res1 = mysql_result($nme, $x,'subject');
		$res2 = mysql_result($nme, $x,'email_from');
		$res3 = mysql_result($nme, $x,'date');
		print "<tr>\n";
		print "<td>$res1</td>\n<td>$res2</td>\n<td>$res3</td>\n";
		print "</tr>\n";
		$x++;
	}
	print "</table>";
	mysql_close();
} else {
	echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'></HEAD><body>";
	}
?>

 

MySQL kodas

CREATE TABLE IF NOT EXISTS `system_mail_list` (
 `id_position` int(11) NOT NULL AUTO_INCREMENT,
 `subject` text COLLATE utf8_bin NOT NULL,
 `email_from` text COLLATE utf8_bin NOT NULL,
 `date` text COLLATE utf8_bin NOT NULL,
 PRIMARY KEY (`id_position`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=0 ;

CREATE TABLE IF NOT EXISTS `users` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` text NOT NULL,
 `password` text NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;


INSERT INTO `users` (`id`, `name`, `password`) VALUES
(1, 'admin', 'admin');

 

ka daro skriptas???

skriptas per XMLRPC raso irasus i wordpress, irasai imami is email per IMAP. konfiguracija parasyta kaip wordpress.

 

ka tik patikrinau, veikia ir su Rambler

Redagavo ZTG
Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 2 mėnesių...

Pritariu Kerniui, man šis dalykas pravertė laikantis teises, buvau pasidaręs, kad kai tik atsiranda laisva vieta man tinkančiu laiku ir man tinkančiame mieste gaučiau sms žinutę taip vietoj to, kad laukčiau mėnesi laiko radau vieta po keleto dienų.(Viskas vyko prieš pradedant išduoti laikinas teisias)

 

Gal gali plačiau kaip darei? XQuery, regexp ar kazkas su html ?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Gal gali plačiau kaip darei? XQuery, regexp ar kazkas su html ?

 

tada dar nežinojau apie simplehtmldom biblioteką, su regex tingėjau žaisti tai paprasčiau su file_get_contents pasimdavau htmla ir su explode html isskaidydavau i dalis ir taip susirasdavau ko reikia, o sms siuntimui tai sms.verslumas.net api naudojau.

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 1 metų...

Mane domintų ar web scrapinimas iš teisinės pusės yra legalus, tarkim jei naudoti trečiųjų šalių tinklapių informaciją pateikti savo svetainėje? Tai realiai įmanoma susekti ir įrodyti jog informacija yra nuscraipinta? Pvz realus pavyzdys: http://int.soccerway.com/teams/italy/juventus-fc/1242/ Komandų sudėčių scrapinimas ir panašūs dalykai, kurie nėra kažkokie tai straipsniai su kuriais viskas elementariai patikrinama :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Laba diena,

ar eina padaryti scraperį, kad ne tik pateiktų naujienas txt, bet kad ir imtų paveikslėlius, ar video. Ar einą visą visumą nuscrapinti?

 

Paveikslėlius eina, nes nuskaitomas html kodas, tai tiesiog surandi paveikslėlių tagus, išrenki failų adresus ir išsisaugai. Dėl video priklauso - jeigu bus nurodytas kelias iki failo, galėsi lengvai išsisaugot, jeigu koks nors embedded video, tada priklauso - galėsi pats analogiškai embed'int, galėsi ieškot būdų kaip failą nusisiurbt.

 

Gal kas Tv programos ar ORu scraperi turi?

 

O gal tokius klausimus į skelbimų skyrelį geriau? :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...