универсальный парсер новостей на c #подразумеваете: написать код один раз и дальше его использовать для разных новостных сайтов, то нет
Возможно ли чтобы он работал на большинстве сайтов
Ключевое слово lock не позволит ни одному потоку войти в важный раздел кода в тот момент, когда в нем находится другой поток. При попытке входа другого потока в заблокированный код потребуется дождаться снятия блокировки объекта.
using System;
using ADOX;
using System.Data.OleDb;
using System.Data;
using System.IO;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
CreateMdb("toster_ru.mdb");
string fileNameWithPath = Environment.CurrentDirectory + "\\toster_ru.mdb";
CreateTableInToMdb(fileNameWithPath);
InsertToMdb(fileNameWithPath);
UpdateToMdb(fileNameWithPath);
var myDataTable = new DataTable();
using (var conection = new OleDbConnection("Provider = Microsoft.JET.OLEDB.4.0; Data Source = " + fileNameWithPath))
{
conection.Open();
var query = "Select info From my_table";
var adapter = new OleDbDataAdapter(query, conection);
adapter.Fill(myDataTable);
Console.WriteLine(myDataTable.Rows[0][0].ToString()); //output: toster2.ru
Console.ReadKey();
}
}
static void CreateMdb(string fileNameWithPath)
{
if (File.Exists(fileNameWithPath))
return;
Catalog cat = new Catalog();
string connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Jet OLEDB:Engine Type=5";
cat.Create(String.Format(connstr, fileNameWithPath));
cat = null;
}
static void InsertToMdb(string fileNameWithPath)
{
var con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + fileNameWithPath);
var cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandText = "insert into my_table (ID, [Info], [text]) values (@ID, @Info, @text);";
cmd.Parameters.AddWithValue("@ID", 1);
cmd.Parameters.AddWithValue("@Info", "toster.ru");
cmd.Parameters.AddWithValue("@text", "blabla");
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
static void UpdateToMdb(string fileNameWithPath)
{
var con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + fileNameWithPath);
var cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandText = "UPDATE my_table SET [Info] = ?, [text] = ? WHERE ID = ?;";
cmd.Parameters.AddWithValue("@p1", OleDbType.VarChar).Value = "toster2.ru";
cmd.Parameters.AddWithValue("@p2", OleDbType.VarChar).Value = "blabla2";
cmd.Parameters.AddWithValue("@p3", OleDbType.VarNumeric).Value = 1;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
static void CreateTableInToMdb(string fileNameWithPath)
{
try
{
OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + fileNameWithPath);
myConnection.Open();
OleDbCommand myCommand = new OleDbCommand();
myCommand.Connection = myConnection;
myCommand.CommandText = "CREATE TABLE my_table([ID] NUMBER, [Info] TEXT, [text] TEXT)";
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
}
catch { }
}
}
}
SHOW();
... профит...using MyWindowInDLL;
....
...
public MainWindow()
{
InitializeComponent();
var wind = new MyWindowInDLL.SuperWindow();
wind.Show();
}
Не понимаю, как в одну переменную записывается 2 разных значения
People humanoid_1 = new People("Name1"); // humanoid_1 -> переменная раз
People humanoid_2 = new People("Name2"); // humanoid_2 -> переменная дваз
People
. People
. А ссылочные типы хранятся в куче. А при создании объекта ссылочного типа People humanoid_1 = new People("Name1");
в стеке помещается ссылка на адрес в куче.Какие требования для разработки приложений под Windows XP и выше?
string my_text = "Hello";
string nickname = "ogpol32!";
Console.WriteLine(string.Format($"({my_text}, {nickname})"));
И есть ли существенная разница?
Как вы относитесь к Telerik?
HttpWebRequest
и HttpWebResponse
:string urlAddress = "http://google.com";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
Stream receiveStream = response.GetResponseStream();
StreamReader readStream = null;
if (response.CharacterSet == null)
{
readStream = new StreamReader(receiveStream);
}
else
{
readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
}
string data = readStream.ReadToEnd();
response.Close();
readStream.Close();
}
using System.Net;
using (WebClient client = new WebClient())
{
client .QueryString.Add("ключ", "значение"); //для get
string htmlCode = client.DownloadString("http://somesite.com/index.html");
}
//post запрос:
string url = "http://site.com/";
using (var webClient = new WebClient())
{
// Создаём коллекцию параметров
var pars = new NameValueCollection();
// Добавляем необходимые параметры в виде пар ключ, значение
pars.Add("ключ", "значение");
// Посылаем параметры на сервер
// Может быть ответ в виде массива байт
var response = webClient.UploadValues(url, pars);
}
using mshtml;
HTMLDocument doc = new HTMLDocument();
IHTMLDocument2 doc2 = (IHTMLDocument2)doc;
doc2.clear();
doc2.write(//тут html-код (string));
IHTMLDocument3 doc3 = (IHTMLDocument3)doc2;
IHTMLElement btns = doc3.getElementById("YouId or ne YouId");
IHTMLElementCollection buttons = btns.all;
foreach (IHTMLElement element in buttons )
{
element.click();
}
Console.WriteLine("SC.color ={ 0},SC.ves ={ 1},SC.power ={ 2},SC.transmission ={ 3},SC.complete_drive{ 4}", SC.color, SC.ves, SC.power, SC.transmission, SC.complete_drive);
Console.WriteLine("SC.color ={0},SC.ves ={1},SC.power ={2},SC.transmission ={3},SC.complete_drive={4}", SC.color, SC.ves, SC.power, SC.transmission, SC.complete_drive);
public void TakeMessage(string btnStatus, string userName, Button btnTest)
{
if (userName == "")
{
MessageBox.Show("Введите Ваше имя!");
}
else if (btnStatus == "Red")
{
btnTest.BackColor = Color.Green;
btnTest.Text = "Свободно";
}
else
{
btnTest.BackColor = Color.Red;
btnTest.Text = userName;
}
}
private void btnClick(object sender, EventArgs e)
{
var btn = sender as Button;
if (btn.BackColor == Color.Green)
{
btnStatus = "Green";
}
else
{
btnStatus = "Red";
}
Server.SendMessageToAll(btnStatus, tbLogin.Text);
TakeMessage(btnStatus, tbLogin.Text, btn);
}
using System;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace ConsoleApplication3
{
public static class Program
{
private static string html = "Ошибка";
private static void Main()
{
ShowTags("https://www.yandex.ru/","a");
Console.ReadKey();
}
private static async void ShowTags(string my_url, string tag = "a") // Тег по умолчанию для поиска, ищем теги <a></a>
{
// Загружем страницу
string data = await GetHtmlPageText(my_url);
if (!data.Contains("Ошибка"))
{
string pattern = string.Format(@"\<{0}.*?\>(?<tegData>.+?)\<\/{0}\>", tag.Trim());
// \<{0}.*?\> - открывающий тег
// \<\/{0}\> - закрывающий тег
// (?<tegData>.+?) - содержимое тега, записываем в группу tegData
Regex regex = new Regex(pattern, RegexOptions.ExplicitCapture);
MatchCollection matches = regex.Matches(data);
foreach (Match matche in matches)
{
Console.WriteLine(matche.Value);
Console.WriteLine("Содержание:");
Console.WriteLine(matche.Groups["tegData"].Value);
Console.WriteLine("---------------------------");
}
}
else
{
Console.WriteLine("Ошибка при загрузке со страницы: " + my_url);
}
}
private static async Task<string> GetHtmlPageText(string url)
{
await Task.Run(async()=>{
// ... используем HttpClient.
using (HttpClient client = new HttpClient())
using (HttpResponseMessage response = await client.GetAsync(url))
using (HttpContent content = response.Content)
{
// ... записать ответ
string result = await content.ReadAsStringAsync();
if (html != null)
{
html = result;
}
}
});
return html;
}
}
}
<a href="http://mail.yandex.ru"onclick="c(this,17,1080)">Войти в почту</a>
Содержание:
Войти в почту