首页 > 编程语言 >Python网络爬虫:从入门到实战

Python网络爬虫:从入门到实战

时间:2025-01-10 11:00:28浏览次数:3  
标签:入门 Python 爬虫 movies html url import page

        Python以其简洁易用和强大的库支持成为网络爬虫开发的首选语言。本文将系统介绍Python网络爬虫的开发方法,包括基础知识、常用工具以及实战案例,帮助读者从入门到精通。


什么是网络爬虫?

网络爬虫(Web Crawler)是一种自动化程序,用于抓取网页内容。爬虫通过模拟浏览器行为访问网站,将所需的数据提取出来并保存,广泛应用于数据分析、搜索引擎和机器学习等领域。


开发网络爬虫的基本步骤

  1. 明确目标:确定需要抓取的数据和目标网站。
  2. 分析网站:通过浏览器开发者工具分析网页结构,确定数据所在的HTML标签和属性。
  3. 发送请求:使用HTTP库发送请求获取网页内容。
  4. 解析数据:使用解析库提取目标数据。
  5. 保存数据:将数据存储到文件或数据库中。

常用工具和库

1. requests

requests是一个简单且功能强大的HTTP请求库,用于发送GET和POST请求。

安装方法:

pip install requests

示例代码:

import requests

url = "https://example.com"
response = requests.get(url)
if response.status_code == 200:
    print(response.text)

2. BeautifulSoup

BeautifulSoup是一个HTML和XML解析库,适合从网页中提取特定数据。

安装方法:

pip install beautifulsoup4

示例代码:

from bs4 import BeautifulSoup

html = "<html><body><h1>Hello, world!</h1></body></html>"
soup = BeautifulSoup(html, 'html.parser')
print(soup.h1.text)

3. lxml

lxml是一个快速高效的HTML/XML解析库,支持XPath语法。

安装方法:

pip install lxml

示例代码:

from lxml import etree

html = "<html><body><h1>Hello, world!</h1></body></html>"
tree = etree.HTML(html)
print(tree.xpath('//h1/text()'))

4. Scrapy

Scrapy是一个功能强大的爬虫框架,适合开发复杂的爬虫项目。

安装方法:

pip install scrapy

示例代码:

scrapy startproject myproject

实战案例:爬取豆瓣电影 Top250

1. 分析目标

目标是抓取豆瓣电影 Top250 的电影名称、评分和评论人数。

目标网址:https://movie.douban.com/top250

2. 创建爬虫脚本

完整代码:

import requests
from bs4 import BeautifulSoup
import csv

def fetch_page(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
    }
    response = requests.get(url, headers=headers)
    return response.text

def parse_page(html):
    soup = BeautifulSoup(html, 'html.parser')
    movies = []
    for item in soup.find_all('div', class_='item'):
        title = item.find('span', class_='title').text
        rating = item.find('span', class_='rating_num').text
        comments = item.find('div', class_='star').find_all('span')[-1].text
        movies.append([title, rating, comments])
    return movies

def save_to_csv(data, filename='movies.csv'):
    with open(filename, 'w', newline='', encoding='utf-8') as file:
        writer = csv.writer(file)
        writer.writerow(['Title', 'Rating', 'Comments'])
        writer.writerows(data)

def main():
    base_url = "https://movie.douban.com/top250?start={}"
    all_movies = []
    for start in range(0, 250, 25):
        url = base_url.format(start)
        html = fetch_page(url)
        movies = parse_page(html)
        all_movies.extend(movies)
    save_to_csv(all_movies)

if __name__ == '__main__':
    main()

3. 运行代码

运行脚本后会生成一个movies.csv文件,包含抓取的电影信息。


注意事项

1. 反爬措施

许多网站会部署反爬虫机制。以下是常见应对方法:

  • 模拟浏览器行为:添加请求头,设置User-Agent
  • 延时访问:使用time.sleep避免过于频繁的请求。
  • 代理IP:使用代理池避免IP被封。

示例:设置请求头和延时访问

import time
headers = {
    'User-Agent': 'Mozilla/5.0'
}
response = requests.get(url, headers=headers)
time.sleep(1)  # 每次请求间隔1秒

2. 法律和道德

在抓取数据前,请确保:

  • 遵守目标网站的robots.txt规则。
  • 数据用于合法目的,不违反隐私和版权法规。

进阶:爬取动态内容

对于使用JavaScript渲染的网页,常规爬虫可能无法获取完整数据。这时可以使用以下工具:

1. selenium

selenium用于模拟真实浏览器行为,适合抓取动态加载的内容。

安装方法:

pip install selenium

示例代码:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
driver.get('https://example.com')
print(driver.page_source)
driver.quit()

2. Playwright

Playwright是一个现代浏览器自动化工具,支持多种语言。

安装方法:

pip install playwright
playwright install

示例代码:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto('https://example.com')
    print(page.content())
    browser.close()

总结

本文详细介绍了Python网络爬虫的开发流程,从基础工具到实战案例,再到应对动态内容的高级方法。通过学习这些内容,你可以掌握开发高效爬虫的技能,并运用到实际项目中。

标签:入门,Python,爬虫,movies,html,url,import,page
From: https://blog.csdn.net/qq_63170044/article/details/145051711

相关文章

  • Web安全攻防入门教程——hvv行动详解
    Web安全攻防入门教程Web安全攻防是指在Web应用程序的开发、部署和运行过程中,保护Web应用免受攻击和恶意行为的技术与策略。这个领域不仅涉及防御措施的实现,还包括通过渗透测试、漏洞挖掘和模拟攻击来识别潜在的安全问题。本教程将带......
  • Web安全攻防入门教程——hvv行动详解
    Web安全攻防入门教程Web安全攻防是指在Web应用程序的开发、部署和运行过程中,保护Web应用免受攻击和恶意行为的技术与策略。这个领域不仅涉及防御措施的实现,还包括通过渗透测试、漏洞挖掘和模拟攻击来识别潜在的安全问题。本教程将带你......
  • python激活venv做了什么
    当激活Python的虚拟环境(venv)时,激活脚本会对系统环境进行一系列临时修改,让终端的Python和相关工具使用虚拟环境中的版本和依赖。这些操作不会永久改变系统环境,只在当前终端会话中生效。激活虚拟环境的操作详解1.修改PATH环境变量激活脚本会将虚拟环境的bin(Linux/MacOS......
  • python画大的pass与fail logo(带颜色)
    print("\033[32m"+4*""+9*"x"+10*""+1*"x"+11*""+7*"x"+5*""+7*"x"+4*""+"\033[0m")print("\033[32m"+4*""+2*"x"......
  • Stable Diffusion超详细教程!从0-1入门到进阶
    一、本地部署StableDiffusion(全套教程文末领取哈)前言目前市面上比较权威,并能用于工作中的AI绘画软件其实就两款。一个叫Midjourney(简称MJ),另一个叫Stable-Diffusion(简称SD)。MJ需要付费使用,而SD开源免费,但是上手难度和学习成本略大,并且非常吃电脑配置(显卡、内存)。E和Mid......
  • 网络安全入门教程(非常详细)从零基础入门到精通_网路安全 教程
     前言1.入行网络安全这是一条坚持的道路,三分钟的热情可以放弃往下看了。2.多练多想,不要离开了教程什么都不会了,最好看完教程自己独立完成技术方面的开发。3.有时多百度,我们往往都遇不到好心的大神,谁会无聊天天给你做解答。4.遇到实在......
  • 网络安全入门教程(非常详细)从零基础入门到精通_网路安全 教程
      前言1.入行网络安全这是一条坚持的道路,三分钟的热情可以放弃往下看了。2.多练多想,不要离开了教程什么都不会了,最好看完教程自己独立完成技术方面的开发。3.有时多百度,我们往往都遇不到好心的大神,谁会无聊天天给你做解答。4.遇到实在搞不懂的,可以先放放,以后再来解决。→......
  • 医学图像分析工具06:MNE-Python || EEG/MEG数据分析
    MNE-Python是一款专为处理和分析脑电图(EEG)、脑磁图(MEG)以及功能性磁共振成像(fMRI)数据而设计的开源Python库。得益于Python的灵活性和可扩展性,MNE-Python不仅可以满足基础分析的需求,还能通过其强大的社区生态实现高度定制化。在本教程中,我们将深入探讨MNE-Python的功......
  • 【openAI库】Python语言openAI库详解:从入门到精通(从0到1手把手教程)
    在人工智能(AI)领域,OpenAI无疑是全球最受瞩目的机构之一。它推出的GPT系列模型、DALL·E等创新技术,正在深刻改变各行各业。作为Python开发者,我们该如何快速上手并高效利用OpenAI的API,成为了提升个人竞争力的关键。本文将带你从零开始,深入解析Python语言中的openAI库,助你掌握AI开发......
  • 【Vulkan入门】24-控制视角
    文章目录先叨叨代码信息具体思路关键代码SDL_AppEventCamera::UpdatePositonCamera::UpdateFaceVulkanRenderer::UpdateUniformBuffer运行效果先叨叨在实现深度测试后,已经可以实现简单的3D渲染了。为了今后能更好的观察3D效果,所以需要在渲染时动态变换视角。本篇就......