会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132360个问题
JAVA 全系列/第三阶段:数据库编程/SQL 语言 483楼

from fake_useragent import UserAgent
import requests
from lxml import etree


# 发送请求类
class Downloader():
    def download(self,url):
        print(url)
        headers = {'User-Agent':UserAgent().chrome}
        resp = requests.get(url, headers = headers)
        if resp.status_code == 200:
            resp.encoding = 'utf-8'
            return resp.text

# 数据解析类
class Parser():
    def parse(self, html):
        e = etree.HTML(html)
        contents =[div.xpath('string(.)') for div in e.xpath('//div[@class="content"]')]
        urls = ['https://www.qiushibaike.com{}'.format(url) for url in e.xpath('//ul[@class="pagination"]/li/a/@href')]
        return contents, urls

# 数据保存类
class DataOutPut():
    def save(self, datum):
        with open('duanzi1.txt', 'a', encoding='utf-8') as f:
            for data in datum:
                f.write(data+'\n')


# URL管理器
class URLManager():
    def __init__(self):
        self.new_url = set()
        self.old_url = set()
    # 加入一个Url
    def add_new_url(self,url):
        if url is not None and url !='' and url not in self.old_url:
            self.new_url.add(url)
    # 加入多个Url
    def add_new_urls(self,urls):
        for url in urls:
            self.add_new_url(url)
    # 获取一个Url
    def get_new_url(self):
        url = self.new_url.pop()
        self.old_url.add(url)
        return url
    # 获取还有多少个Url要爬取
    def get_new_url_size(self):
        return len(self.new_url)
    # 获取是否还有Url要爬取
    def is_have_new_url(self):
        return self.get_new_url_size() > 0

# 调度器
class Scheduler():
    def __init__(self):
        self.downloader = Downloader()
        self.parser = Parser()
        self.data_out_put = DataOutPut()
        self.url_manager = URLManager()
    def start(self, url):
        self.url_manager.add_new_url(url)
        url = self.url_manager.get_new_url()
        html = self.downloader.download(url)
        datum, urls = self.parser.parse(html)
        self.data_out_put.save(datum)
        self.url_manager.add_new_url(urls)


if __name__ == '__main__':
    scheduler = Scheduler()
    url = 'https://www.qiushibaike.com/text/'
    scheduler.start(url)

老师您好!我这里出现这样的BUG请问怎么结局呀!

微信截图_20210604214118.png

Python 全系列/第十五阶段:Python 爬虫开发/爬虫反反爬- 484楼

fl_se_67.zip

屏幕截图(27).png请问我这是什么问题


Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask高级 486楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程 488楼


屏幕截图 2023-03-08 205054.png

为什么cnpm install用不了了,以前不会这样

WEB前端全系列/第十九阶段:Vue3企业级项目/Vue3企业级项目 490楼
微服务/第一阶段:SSM 框架和项目开发/(旧)Mybatis 491楼

dubbo页面跳转要加参数才能访问不加参数访问不了,还没开始写业务

JAVA 全系列/第十一阶段:分布式RPC调用和分布式文件存储/Dubbo 492楼

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class n4_OneWaySocketServer {
    public static void main(String[] args) {
        Socket socket =null;
        BufferedReader br = null;
        PrintWriter pw =null;

        try {
            ServerSocket serverSocket = new ServerSocket(8888);
            System.out.println("服务端启动开始监听");
            socket = serverSocket.accept();

            System.out.println("链接成功...");
            //读取客户端的消息
            br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            //协会消息流对象
            pw = new PrintWriter(socket.getOutputStream());

            while(true){
               
                String str = br.readLine();
                System.out.println("客户端说:" + str);
                if ("exit".equals(str)){
                    break;
                }
                pw.println(str);
                pw.flush();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (br!=null){
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (pw!=null){
                pw.close();
            }
            if (socket!=null){
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }

    }
}
1.服务端中的while循环里面有    String str = br.readLine();   这个读取操作是不是没有东西读就会一直卡着,直到有新的东西传过来,不然的话是不是就会出现服务器说null null null这样的?

2.br.close  socket.close向这些  什么流啊,socket,scanner对象关闭顺序是什么

JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 493楼
Python 全系列/第一阶段:Python入门/面向对象 494楼

image.png

WEB前端全系列/第十八阶段:Vue3知识体系/Vue基础 495楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637