Python实现简易Web爬虫详解

yizhihongxing

标题:Python实现简易Web爬虫详解

1. 准备工作

在使用Python实现Web爬虫之前,需要安装好Python环境和相关的第三方库,例如Requests和Beautiful Soup。

# 安装requests和beautifulsoup4库
pip install requests
pip install beautifulsoup4

2. 爬取页面

使用Python实现Web爬虫的第一步是获取目标网页的HTML源代码。这可以通过requests库中的get()方法实现。

import requests

url = 'http://www.example.com'
response = requests.get(url)
html = response.text

3. 解析HTML

获取到HTML源代码后,我们需要使用Beautiful Soup库来解析HTML并提取我们需要的信息。

from bs4 import BeautifulSoup

# 创建Beautiful Soup对象
soup = BeautifulSoup(html, 'html.parser')

# 获取网页标题
title = soup.title.string

# 获取所有链接
links = []
for link in soup.find_all('a'):
    links.append(link.get('href'))

4. 存储数据

解析HTML并提取信息后,我们一般会将数据存储到本地或者数据库中。

import json

# 将数据存储到JSON文件中
data = {'title': title, 'links': links}
with open('data.json', 'w') as f:
    json.dump(data, f)

示例一:爬取豆瓣电影Top250

我们可以使用Python实现爬取豆瓣电影Top250,并将电影名、评分和简介存储到本地JSON文件中。

import requests
from bs4 import BeautifulSoup
import json

url = 'https://movie.douban.com/top250'
data = []

def crawl(url):
    response = requests.get(url)
    html = response.text
    soup = BeautifulSoup(html, 'html.parser')
    for item in soup.find_all('li', class_='item'):
        data.append({
            'title': item.find('span', class_='title').string,
            'rating': item.find('span', class_='rating_num').string,
            'intro': item.find('span', class_='inq').string
        })

    next_link = soup.find('span', class_='next').find('a')
    if next_link:
        next_url = url + next_link.get('href')
        crawl(next_url)

crawl(url)

with open('douban_top250.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False)

示例二:爬取天猫商城

我们可以使用Python实现爬取天猫商城中的商品信息,并将商品名称、价格和销量存储到本地CSV文件中。

import requests
from bs4 import BeautifulSoup
import csv

url = 'https://list.tmall.com/search_product.htm?q=iphone'

def crawl(url):
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
    }
    response = requests.get(url, headers=headers)
    html = response.text
    soup = BeautifulSoup(html, 'html.parser')
    for item in soup.find_all('div', class_='product'):
        title = item.find('p', class_='productTitle').string
        price = item.find('p', class_='productPrice').em.string
        sales = item.find('p', class_='productStatus').span.text
        data.append([title, price, sales])

    next_link = soup.find('a', class_='ui-page-next')
    if next_link:
        next_url = 'https://list.tmall.com' + next_link.get('href')
        crawl(next_url)

data = []
crawl(url)

with open('tmall.csv', 'w', encoding='utf-8-sig', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(['商品名称', '价格', '销量'])
    writer.writerows(data)

以上就是Python实现简易Web爬虫的详细攻略,希望对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现简易Web爬虫详解 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • 关于Python Tkinter Button控件command传参问题的解决方式

    如何在Tkinter中的button控件上使用command传参是一个常见的问题,下面是具体的解决方法: 标准的Button控件 首先我们来看一下标准的Button控件,它的command参数并不能直接传参,但是可以通过lambda表达式来传递参数。示例代码如下: from tkinter import * def print_name(name): pri…

    python 2023年6月13日
    00
  • Python简单遍历字典及删除元素的方法

    当我们需要对一个字典进行遍历或者删除其中的某些元素时,Python提供了一些常用的方法。下面详细介绍具体的操作步骤。 遍历字典 当我们需要遍历字典时,可以使用for循环来完成。以下是一个简单的遍历示例: my_dict = {‘name’: ‘Alice’, ‘age’: 25, ‘gender’: ‘female’} for key, value in m…

    python 2023年5月13日
    00
  • Python接口自动化 之用例读取方法总结

    下面我将分步骤详细讲解“Python接口自动化 之用例读取方法总结”的完整攻略。 1. 确定测试用例的存放路径 首先,你需要明确测试用例在哪里存放。一般来说,测试用例可以存放在Excel表格或者CSV文件中。如果是Excel表格,可以使用pandas库中的read_excel()方法来读取,如果是CSV文件,可以使用pandas库中的read_csv()方法…

    python 2023年5月19日
    00
  • Python3 assert断言实现原理解析

    Python3 assert断言实现原理解析 何为断言 Python3中有一个关键字assert,用来进行断言判断。所谓断言,是指在运行时检查某个条件是否满足。如果满足则程序正常执行,否则抛出异常。 常见的断言格式为: assert boolean_expression 其中boolean_expression是一个返回布尔值的表达式,如果表达式为假,则会抛…

    python 2023年5月13日
    00
  • Python图片处理之图片采样处理详解

    对于Python图片处理之图片采样处理,我将为您提供以下完整攻略。 简介 在许多计算机视觉中,图像采样通常是将给定的一张高分辨率图像转换为一张低分辨率图像的过程。这样的过程可以在某些情况下显著减少计算复杂度,并允许在较小的存储空间中存储图像。 在Python中,我们可以使用许多开源库来实现图像采样。本文将介绍如何使用Python中的openslide、ope…

    python 2023年5月18日
    00
  • 详解python 支持向量机(SVM)算法

    下面是关于“详解Python支持向量机(SVM)算法”的完整攻略。 1. 支持向量机(SVM)算法简介 支持向量机(SVM)是一种二分类模型它的基本模型是定义特征空间上间隔最大的线性分类器,其学习策略便是间隔最大化,终可转化为一个凸二次规划问题的求解。SVM算法具有良好的泛化能力和鲁棒性,被广泛用于分类、回归和异常检测等领域。 2. Python实现支持向量…

    python 2023年5月13日
    00
  • python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例

    Python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例 QDateTimeEdit是PyQt5的一个日期和时间控件,它可以接受日期和时间的输入,并且可以弹出一个日期时间选择器。 使用方法 使用QDateTimeEdit非常简单,我们只需用QDateTimeEdit()创建一个实例对象,然后在UI界面中使用它就可…

    python 2023年6月2日
    00
  • Python中的迭代器与生成器使用及说明

    Python中的迭代器与生成器使用及说明 什么是迭代器? 在 Python 中,迭代器是一个实现了 __iter__() 和 __next__() 方法的对象。__iter__() 返回迭代器对象本身,__next__() 返回迭代器中的下一个值。如果没有更多的值可供迭代,那么 __next__() 方法应该抛出 StopIteration 异常。 迭代器的…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部