首页 > 系统相关 >走进Linux编程的大门

走进Linux编程的大门

时间:2023-06-01 09:35:33浏览次数:41  
标签:include addr 编程 request 爬虫 Linux BUFSIZE 大门

随着Linux的不断普及,使用Linux的人也越来越多了。然而在Linux中如何进行程序设计,用什么样的开发工具好呢?本文就以我初学Linux编程的一点心得体会,和大家共同探讨。

在Linux中进行程序设计,可以使用各种编程语言和开发工具,以下是一些常用的方法:

1、C/C++编程

C/C++是Linux系统中最常用的编程语言之一,可以使用gcc/g++编译器进行编译和调试。

2、Python编程

Python是一种高级编程语言,也是Linux系统中常用的编程语言之一,可以使用Python解释器进行编写和调试。

3、Java编程

Java是一种跨平台的编程语言,也可以在Linux系统中进行编写和调试,可以使用JDK和Eclipse等开发工具。

4、Shell脚本编程

Shell脚本是Linux系统中常用的脚本语言,可以使用vi或nano等编辑器进行编写和调试。

5、使用集成开发环境(IDE)

Linux系统中也有一些集成开发环境,如Eclipse、NetBeans等,可以方便地进行程序设计和调试。

总之,在Linux系统中进行程序设计,需要掌握一些基本的编程语言和开发工具,以及Linux系统的基本操作和命令。

Linux是一个开源的操作系统,具有高度的可定制性和灵活性,可以根据用户的需求进行自定义配置和优化。同时,Linux系统具有较高的稳定性和安全性,可以有效地保护爬虫程序的稳定性和安全性。此外,Linux系统还提供了丰富的命令行工具和脚本语言,如Python、Perl等,可以方便地编写和运行爬虫程序。因此,Linux系统成为了爬虫开发者的首选操作系统之一。

C语言爬虫程序

以下是一个用C语言写的简单网络爬虫程序,可以爬取指定 URL 的 HTML 页面。本示例基于Linux系统和POSIX标准库,使用了 socket、string、stdlib 和 unistd 库。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>

#define BUFSIZE 4096

int main(int argc, char **argv) {
    if (argc < 2) {
        fprintf(stderr, "Usage: %s <url>\n", argv[0]);
        exit(-1);
    }
    char *url = argv[1];
    char *tok = strtok(url, "/");
    struct hostent *host = gethostbyname(tok);
    if (host == NULL) {
        perror("gethostbyname failed");
        exit(-1);
    }

    // 创建socket并连接到指定地址
    int sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (sockfd < 0) {
        perror("socket failed");
        exit(-1);
    }
    struct sockaddr_in addr = {0};
    addr.sin_family = AF_INET;
    memcpy(&addr.sin_addr.s_addr, host->h_addr, sizeof(addr.sin_addr.s_addr));
    addr.sin_port = htons(80);
    if (connect(sockfd, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
        perror("connect failed");
        exit(-1);
    }

    // 发送 HTTP 请求
    char request[BUFSIZE] = {0};
    snprintf(request, BUFSIZE, "GET /%s HTTP/1.1\r\n", strstr(url, "/"));
ncat(request, "User-Agent: Mozilla/5.0\r\n", BUFSIZE-strlen(request));
    strncat(request, "Accept: */*\r\n", BUFSIZE-strlen(request));
    strncat(request, "Connection: close\r\n", BUFSIZE-strlen(request));
    strncat-strlen(request));
    strncat(request, host->h_name, BUFSIZE-strlen(request));
    strncat(request, "\r\n\r\n", BUFSIZE-strlen(request));

    if (send(sockfd, request, strlen(request), 0) < 0) {
        perror("send failed");
        exit(-1);
    }

    // 接收响应并打印
    char response[BUFSIZE] = {0};
    int nrecv = recv(sockfd, response, BUFSIZE-1, 0);
    while (nrecv > 0) {
        response[nrecv] = '\0';
        printf("%s", response);
        nrecv = recv(sockfd, response, BUFSIZE-1, 0);
    }

    close(sockfd);
    return 0;
}

本程序使用 HTTP GET 请求从指定的 URL 获取 HTML 内,并将其打印到控制台上。注意:实际使用爬虫要遵守网站规则,不会对他人的内容进行未经允许的访问和抓取。

Python爬虫程序

Python爬虫程序是一种自动化程序,用于从互联网上获取数据。以下是一个简单的Python爬虫程序的示例:

import requests
from bs4 import BeautifulSoup

url = 'Example Domain'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# 获取页面标题
title = soup.title.string
print(title)

# 获取页面所有链接
links = []
for link in soup.find_all('a'):
    links.append(link.get('href'))
print(links)

这个程序使用了requests库和BeautifulSoup库来获取网页内容和解析HTML。它首先发送一个GET请求到指定的URL,然后使用BeautifulSoup解析响应文本。最后,它获取页面标题和所有链接,并将它们打印出来。

标签:include,addr,编程,request,爬虫,Linux,BUFSIZE,大门
From: https://www.cnblogs.com/q-q56731526/p/17447973.html

相关文章

  • Linux系统下C语言的编程技巧
    Linux系统能够为人们提供更加安全实用的效果,保证计算机系统能够稳定的运行。利用Linux系统下首先要进行C语言的编程,掌握编程的技巧能够更好的发挥计算机的作用。如何掌握Linux系统下计算机C语言的编程技巧是计算机发展的关键要素。本文对Linux系统下计算机C语言的编程技巧进行相......
  • 一分钟学一个 Linux 命令 - pwd
    前言大家好,我是god23bin。欢迎大家继续围观《一分钟学一个Linux命令》,每天只需一分钟,记住一个Linux命令不成问题。本篇文章将聚焦于pwd命令,一个超级简单又常用的命令。在接下来的内容中,我将快速介绍pwd命令的使用方法,希望能够帮助大家更好地理解和应用。什么是pwd命......
  • linux crypt()函数使用总结
    linuxcrypt()函数使用总结 原型:char*crypt(constchar*key,constchar*salt);标准说明:crypt()算法会接受一个最长可达8字符的密钥(即key),并施以数据加密算法(DES)的一种变体。salt参数指向一个两个字符的字符串,用来改变DES算法。该函数返回一个指针,指向长度13个字符......
  • linux - passwd结构体
     #include<stdio.h>#include<pwd.h>#include<unistd.h>#include<sys/types.h>intmain(){structpasswd*tmp=NULL;tmp=getpwuid(geteuid());printf("username:%s\n",tmp->pw_name);printf("userp......
  • Linux环境下耗尽cpu占用率的指令
     模拟cpu打满foriin`seq1$(cat/proc/cpuinfo|grep"physicalid"|wc-l)`doddif=/dev/zeroof=/dev/null&done 模拟内存打满生产大文件ddif=/dev/zeroof=testbs=1Mcount=2000然后vi打开 vimtest&这种也可以。使用top命令查看linux系统cpu使用情况:#......
  • 微软正在研究使 Linux 脚本更安全
    导读据悉,微软正在研究使 Linux 脚本更安全微软正在研究使Linux 脚本更安全在本周的Linux安全峰会上,systemd的创建者LennartPoettering发表了演讲,他在过去的一年中被微软雇佣,他和微软的其它工程师们正在努力提高Linux的安全性。微软的工程师发表的演讲介绍了......
  • 2023.5.31 Linux系统⽤户管理
    1.⽤户基本概述1.1⽤户相关的命令1.2⽤户创建的原理2.⽤户密码管理3.组的基本管理4.⽤户身份切换5.⽤户身份提权6.⽇志相关审计1.⽤户基本概述Linu属于多⽤户操作系统,在windows中,可以创建多个⽤户,但不允许同⼀时间多个⽤户进⾏系统登陆,但是Linux可以同时⽀持多个⽤户同时登陆......
  • 2023.5.31-Linux系统基本权限
    02.Linux系统基本权限1.权限修改命令chmod2.属主属组修改命令chown3.基础权限设置案例Linux中的⽂件或⽬录的权限和⽤户及⽤户组关联很⼤,Linux中每个⽂件或⽬录都有⼀组共9个基础权限位,每三个字符被分为⼀组,他们分别是属主权限位(占三个字符)、属组权限位(占三个字符)、其他⽤户权......
  • 掌握嵌入式Linux编程0简介
    简介多年来,Linux一直是嵌入式计算的主流。然而,涵盖这一主题的书籍却少之又少:本书旨在填补这一空白。术语"嵌入式Linux"没有很好的定义,可以应用于从恒温器到Wi-Fi路由器到工业控制单元等各种设备内部的操作系统。然而,它们都是建立在相同的基本开源软件上。这些就是我在本书中描......
  • Linux工作原理3设备
    本章是对正常运行的Linux系统中内核提供的设备基础设施的基本考察。纵观Linux的历史,在内核如何向用户展示设备方面已经有了许多变化。我们将从传统的设备文件系统开始,看看内核如何通过sysfs提供设备配置信息。我们的目标是能够提取系统中的设备信息,以便了解一些基本的操作。后面的......