当前位置: 首页 > news >正文

Java面试黄金宝典46

1. Python 如何写爬虫

 

  • 定义:Python 爬虫是借助 Python 语言编写程序,模拟浏览器行为向目标网站发送 HTTP 请求,获取网页内容,再通过解析工具提取所需数据的程序。其本质是自动化的数据采集过程。
  • 要点
    • 发送请求:利用requests库发送 HTTP 请求,如 GET、POST 等,获取网页 HTML 内容。
    • 解析数据:运用BeautifulSouplxml等库解析 HTML,提取所需信息。
    • 处理反爬虫:设置请求头、使用代理 IP、控制请求频率等绕过网站反爬虫机制。
    • 数据存储:将提取的数据存储到文件(如 CSV、JSON)或数据库(如 MySQL、MongoDB)中。
  • 应用:在信息收集、舆情监测、电商价格监控、搜索引擎数据抓取等场景广泛应用。
  • Python 代码示例

python

import requests
from bs4 import BeautifulSoup

url = 'https://www.example.com'
headers = {
    'User - Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
links = soup.find_all('a')
for link in links:
    print(link.get('href'))

 

2. Python 全局锁

 

  • 定义:Python 全局解释器锁(Global Interpreter Lock,GIL)是 Python 解释器中的一个互斥锁,确保同一时刻只有一个线程在解释器中执行 Python 字节码,以此保障 Python 内存管理的线程安全。
  • 要点
    1. 仅影响 CPU 密集型多线程程序,对 I/O 密集型程序影响不大。
    2. 多进程可绕过 GIL 限制,因每个进程有独立的解释器和 GIL。
  • 应用:在编写 Python 多线程程序时,需考虑 GIL 影响。CPU 密集型任务适合用多进程,I/O 密集型任务多线程仍可提升效率。
  • Python 代码示例(对比多线程和多进程)

python

import threading
import multiprocessing

# CPU 密集型任务
def cpu_intensive_task():
    result = 0
    for i in range(10**7):
        result += i
    return result

# 多线程
threads = []
for _ in range(4):
    t = threading.Thread(target=cpu_intensive_task)
    threads.append(t)
    t.start()
for t in threads:
    t.join()

# 多进程
processes = []
for _ in range(4):
    p = multiprocessing.Process(target=cpu_intensive_task)
    processes.append(p)
    p.start()
for p in processes:
    p.join()

 

3. Python 爬虫分为哪几种,分别是什么

 

  • 定义
    1. 通用爬虫:能抓取整个互联网网页的爬虫程序,通常由搜索引擎公司使用,按特定规则遍历网页并存储内容,供后续索引和搜索。
    2. 聚焦爬虫:只抓取与特定主题相关网页的爬虫,专注于获取特定领域的信息。
    3. 增量式爬虫:仅抓取网页中发生变化部分的爬虫,避免重复抓取相同内容,提高爬取效率。
    4. 深层爬虫:深入网页内部链接,抓取更深入层次内容的爬虫。
  • 要点:不同类型爬虫根据功能和应用场景区分,

相关文章:

  • Web前端性能指标Web3D性能优化
  • 【海奇hcrots】
  • Vue3.5 + Vite6.x 项目的完整 Stylelint 配置方案,支持 .vue/.html 内联样式、Less/SCSS/CSS 等多种文件类
  • Linux上通过Docker部署Zabbix6.2监控平台
  • 2.3 Spark运行架构与流程
  • hive/doris查询表的创建和更新时间
  • 【“星睿O6”评测】三套OpenCV,OpenCL/KleidiCV/JPG硬件编码加速测试
  • Python 中使用单例模式
  • vim 编辑器 使用教程
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(1):承上启下,继续上路
  • 突破焊丝虚影干扰,端子焊点缺陷检测如何实现自动化?
  • 基于 SpringBoot 的校园论坛系统
  • 蓝牙连接hci 命令和事件的交互
  • OpenSceneGraph相机系统
  • 求x的c(n,m)次方
  • 智慧零售新引擎!数图将亮相CHINASHOP 2025,助力企业降本增效
  • MCP基础学习二:MCP服务搭建与配置
  • repo仓库文件清理
  • Uniapp使用onShow语法报before initialization
  • 使用 Ktor 构建现代 Android 应用的后端服务
  • 文库网站建设开发/百度引流推广怎么做
  • 深圳市宝安区怎么样/建设优化网站
  • 湖州市南浔区建设局网站/seo网站优化工具大全
  • 网站 个人 公司 区别/青岛网站建设与设计制作
  • 企业网站制作公司盈利/惠州关键词排名优化
  • 成都专业做婚恋网站的网络科技公司/全网优化哪家好