三个python爬虫项目实例代码

三个python爬虫项目实例代码完整攻略

项目简介

本项目是针对python爬虫初学者提供的三个实例爬虫代码,分别是:

  1. 爬取豆瓣图书TOP250的书籍信息
  2. 爬取天猫商城的商品信息及评论
  3. 爬取GitHub上的开源项目信息

每个项目的代码都包括了完整的数据爬取和存储代码,可以作为初学者进行学习和实践的完整资料。

项目目标

在三个不同的爬虫项目中,我们将能够学习到:

  • 如何通过HTTP请求获取网页的HTML代码
  • 如何通过正则表达式筛选获取所需数据
  • 如何通过XPath、CSS Selector获取网页元素信息
  • 如何通过Python代码完成数据的存储、处理和可视化

项目实现

项目一:爬取豆瓣图书TOP250的书籍信息

  • 爬取目标:豆瓣图书TOP250榜单,包括书名、作者、出版社、出版日期、评分等信息
  • 实现过程:

    1. 利用requests库发送HTTP请求,获取HTML代码
    2. 利用正则表达式筛选所需数据
    3. 将数据存储至CSV文件中
  • 示例代码:

import requests
import re
import csv

def get_html(url):
    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)
    if response.status_code == 200:
        return response.text
    else:
        return None


def parse_html(html):
    pattern = re.compile(
        r'<div class="pl2">.*?<a href="(.*?)" title="(.*?)">', re.S)
    items = re.findall(pattern, html)
    return items


def save_csv(items):
    with open('books.csv', 'a', newline='', encoding='utf-8') as f:
        writer = csv.writer(f)
        for item in items:
            writer.writerow([item[1], item[0]])


if __name__ == '__main__':
    for i in range(0, 250, 25):
        url = 'https://book.douban.com/top250?start=' + str(i)
        html = get_html(url)
        items = parse_html(html)
        save_csv(items)

项目二:爬取天猫商城的商品信息及评论

  • 爬取目标:天猫商城的商品信息及评论,包括商品名称、价格、销量、评论数量等信息
  • 实现过程:

    1. 利用Selenium库模拟浏览器行为,获取HTML代码
    2. 利用Xpath方式或CSS Selector方式获取所需数据
    3. 将数据存储至MongoDB中
  • 示例代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from pymongo import MongoClient


def get_html(url):
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    options.add_argument('--disable-gpu')
    driver = webdriver.Chrome(chrome_options=options)
    driver.get(url)
    assert '天猫tmall.com' in driver.title
    # 等待页面加载完毕
    WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.ID, 'J_ItemList')))
    html = driver.page_source
    driver.quit()
    return html


def parse_html(html):
    items = []
    product_list = html.xpath('//div[@id="J_ItemList"]/div[@class="product "]/div[@class="product-iWrap"]')
    for product in product_list:
        item = {}
        item['name'] = product.xpath('.//p[@class="productTitle"]/a/@title')[0]
        item['price'] = product.xpath('.//p[@class="productPrice"]/em/@title')[0]
        item['sales'] = product.xpath('.//div[@class="productStatus"]/span[@class="productStatus-sellCount"]/em/text()')[0]
        item['comments'] = product.xpath('.//div[@class="productStatus"]/span[@class="productStatus-comment"]/a/text()')[0]
        items.append(item)
    return items


def save_mongodb(items):
    client = MongoClient('localhost', 27017)
    db = client['tmall']
    collection = db['goods']
    result = collection.insert_many(items)
    print(f'Inserted {len(result.inserted_ids)} items')


if __name__ == '__main__':
    url = 'https://list.tmall.com/search_product.htm?q=%CD%AF%D2%A9%C6%B7&sort=d&style=w&from=mallfp..pc_1_searchbutton'
    html = get_html(url)
    items = parse_html(html)
    save_mongodb(items)

项目三:爬取GitHub上的开源项目信息

  • 爬取目标:GitHub上的开源项目信息,包括项目名称、作者、描述、星级等信息
  • 实现过程:

    1. 利用GitHub的API获取开源项目信息
    2. 解析JSON数据,获取所需信息
    3. 将数据存储至MySQL数据库中
  • 示例代码:

import requests
import json
import mysql.connector


def get_data(url):
    response = requests.get(url)
    if response.status_code == 200:
        return json.loads(response.text)
    else:
        return None


def parse_data(data):
    items = []
    for repo in data:
        item = {}
        item['name'] = repo['name']
        item['author'] = repo['owner']['login']
        item['description'] = repo['description']
        item['stars'] = repo['stargazers_count']
        items.append(item)
    return items


def save_mysql(items):
    conn = mysql.connector.connect(user='root', password='root', database='github')
    cursor = conn.cursor()
    for item in items:
        cursor.execute(
            'INSERT INTO repos (name, author, description, stars) VALUES (%s, %s, %s, %s)', (item['name'], item['author'], item['description'], item['stars']))
    conn.commit()
    cursor.close()
    conn.close()


if __name__ == '__main__':
    url = 'https://api.github.com/search/repositories?q=language:python&sort=stars'
    data = get_data(url)
    items = parse_data(data['items'])
    save_mysql(items)

总结

本项目介绍了三个实例Python爬虫项目的完整实现过程,旨在帮助爬虫初学者巩固所学知识,掌握实际操作技能。同时,项目中也体现了Python爬虫领域的基本技能和注意事项,如HTTP请求、数据筛选、数据存储等内容。如果您在项目实施过程中依然存在疑问,欢迎随时向我提问。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:三个python爬虫项目实例代码 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • python实现文件+参数发送request的实例代码

    以下是关于“Python实现文件+参数发送request的实例代码”的完整攻略: Python实现文件+参数发送request的实例代码 在Python中,我们可以使用requests模块发送HTTP请求,实现文件+参数发送request的功能。以下是Python实现文件+参数发送request的实例代码的攻略。 发送GET请求 我们可以使用requests…

    python 2023年5月15日
    00
  • PYTHON 爬虫笔记七:Selenium库基础用法

    什么是Selenium     selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。       selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以…

    爬虫 2023年4月11日
    00
  • Python continue语句3大使用方式

    continue 是 Python 中一个常用的控制流语句,它允许我们跳过当前迭代并进入下一个迭代。在本文中,我们将详细介绍 continue 的用法和例子。 continue 语句的语法 continue 语句用于跳过当前循环块中的某次迭代,直接进入下一次迭代。它的语法格式如下: for variable in sequence: if condition…

    2023年2月17日
    00
  • python线程定时器Timer实现原理解析

    在Python中,可以使用threading库的Timer类来实现定时器功能。以下是Timer类的实现原理解析: Timer类的基本用法 Timer类是threading库中的一个类,用于在指定时间后执行一个函数。以下是Timer类的基本用法: import threading def hello(): print("Hello, world!&q…

    python 2023年5月14日
    00
  • Python脚本完成post接口测试的实例

    Python脚本完成POST接口测试的实例 在进行接口测试时,我们可以使用Python脚本来完成POST接口测试。本文将介绍如何使用Python脚本完成POST接口测试,并提供两个示例。 步骤一:安装所需库 在进行POST接口测试之前,我们需要安装所需的库。我们可以使用pip命令来安装: pip install requests 步骤二:发送POST请求 我…

    python 2023年5月15日
    00
  • Python内置模块hashlib、hmac与uuid用法分析

    Python内置模块hashlib、hmac与uuid用法分析 简介 Python内置模块hashlib、hmac和uuid是常用的密码学和唯一标识符相关的模块。本文将分别介绍它们的用法。 hashlib hashlib模块提供了多种编码算法,包括MD5、SHA1、SHA224、SHA256、SHA384、SHA512等。可以用于加密密码、生成消息摘要等。 …

    python 2023年6月2日
    00
  • Python字符串详细介绍

    Python字符串详细介绍 在Python中,字符串是一种常见的数据类型,它用于表示文本数据。在本文中,我们将详细介绍Python字符串的各种操作和方法。 创建字符串 在Python中,我们可以使用单引号、双引号或三引号来创建字符串。以下是一些示例: # 使用单引号创建字符串 string1 = ‘hello world’ # 使用双引号创建字符串 stri…

    python 2023年5月14日
    00
  • Python中url标签使用知识点总结

    Python中url标签使用知识点总结 在Python中,我们可以使用url标签来处理URL地址。url标签是一个HTML标签,它可以用于创建超链接。在本教程中,我们将介绍Python中url标签的使用知识点。以下是一些常见的使用方法: 1. 创建超链接 我们可以使用url标签来创建超链接。以下是一个示例代码,演示如何使用url标签创建超链接: from I…

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