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. 深层爬虫:深入网页内部链接,抓取更深入层次内容的爬虫。
  • 要点:不同类型爬虫根据功能和应用场景区分,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值