继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Python爬虫入门

偶然的你
关注TA
已关注
手记 188
粉丝 9
获赞 51

开篇图

引言

Python 是一种广泛使用的高级编程语言,以其简洁和易读性而闻名。在数据抓取和网络爬虫领域,Python 凭借其丰富的库和框架成为了首选工具。本文将带你从零开始,逐步了解如何使用 Python 编写简单的网络爬虫。

基础知识

在开始编写爬虫之前,你需要了解一些基础知识:

  1. HTTP/HTTPS协议:理解基本的HTTP请求和响应。
  2. HTML/CSS:熟悉HTML和CSS的基本结构,以便解析网页内容。
  3. Python基础:掌握Python的基本语法和常用库。

安装必要的库

为了编写爬虫,我们需要安装一些常用的Python库:

  • requests:用于发送HTTP请求。
  • BeautifulSoup:用于解析HTML文档。
  • pandas:用于处理和分析数据。
pip install requests beautifulsoup4 pandas
第一个爬虫示例

我们从一个简单的例子开始,抓取一个网页的标题。

代码示例

import requests
from bs4 import BeautifulSoup

# 发送HTTP请求
url = 'https://www.example.com'
response = requests.get(url)

# 检查请求是否成功
if response.status_code == 200:
    # 解析HTML内容
    soup = BeautifulSoup(response.text, 'html.parser')

    # 获取页面标题
    title = soup.title.string
    print(f'页面标题: {title}')
else:
    print('请求失败')

开篇图

解析HTML

HTML解析是爬虫的核心部分。我们可以使用BeautifulSoup库来解析HTML文档,并提取所需信息。

示例:抓取多个元素

假设我们要抓取一个网页上的所有链接。

import requests
from bs4 import BeautifulSoup

# 发送HTTP请求
url = 'https://www.example.com'
response = requests.get(url)

# 检查请求是否成功
if response.status_code == 200:
    # 解析HTML内容
    soup = BeautifulSoup(response.text, 'html.parser')

    # 获取所有链接
    links = soup.find_all('a')
    for link in links:
        href = link.get('href')
        if href:
            print(href)
else:
    print('请求失败')

开篇图

处理分页

许多网站都有分页功能,我们需要编写代码来处理多页数据。

示例:抓取分页数据

假设我们要抓取一个分页的新闻列表。

import requests
from bs4 import BeautifulSoup

base_url = 'https://www.example.com/news?page='
page_count = 5

for page in range(1, page_count + 1):
    url = f'{base_url}{page}'
    response = requests.get(url)

    if response.status_code == 200:
        soup = BeautifulSoup(response.text, 'html.parser')

        # 获取新闻标题
        news_titles = soup.find_all('h2', class_='news-title')
        for title in news_titles:
            print(title.text.strip())
    else:
        print(f'请求第{page}页失败')

开篇图

存储数据

抓取到的数据通常需要存储起来,常见的存储方式有CSV文件、数据库等。

示例:保存数据到CSV文件

import requests
from bs4 import BeautifulSoup
import pandas as pd

base_url = 'https://www.example.com/news?page='
page_count = 5
data = []

for page in range(1, page_count + 1):
    url = f'{base_url}{page}'
    response = requests.get(url)

    if response.status_code == 200:
        soup = BeautifulSoup(response.text, 'html.parser')

        # 获取新闻标题
        news_titles = soup.find_all('h2', class_='news-title')
        for title in news_titles:
            data.append({'title': title.text.strip()})
    else:
        print(f'请求第{page}页失败')

# 保存到CSV文件
df = pd.DataFrame(data)
df.to_csv('news_titles.csv', index=False)

开篇图

遵守爬虫道德

在编写爬虫时,务必遵守以下道德规范:

  1. 尊重网站的robots.txt文件:查看目标网站的robots.txt文件,确保你的爬虫不会访问禁止爬取的页面。
  2. 控制请求频率:避免频繁请求,以免对目标网站造成负担。
  3. 合法合规:确保你的行为符合法律法规。

示例:检查robots.txt文件

import requests

url = 'https://www.example.com/robots.txt'
response = requests.get(url)

if response.status_code == 200:
    print(response.text)
else:
    print('无法获取robots.txt文件')

开篇图

总结

通过本文,你已经学会了如何使用Python编写简单的网络爬虫。从发送HTTP请求到解析HTML,再到处理分页和存储数据,每一步都至关重要。希望这些知识能帮助你在数据抓取的道路上更进一步。

开篇图

[拓展建议]

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP