【python】Python实现网络爬虫demo实例

news/2024/7/19 11:53:26 标签: python, 爬虫, 开发语言

前言

Python是目前最为流行的爬虫和数据分析编程语言之一,下面将介绍如何使用Python实现网络爬虫

网络爬虫

Python拥有丰富的网络爬虫库,其中最著名的是爬虫三剑客:requestsBeautifulSoupScrapy

  • requests是一个HTTP库,可以用来进行网络请求。它可以轻松地发出GET、POST等请求,并支持文件上传、SSL/TLS等特性。以下是一个使用requests发出GET请求的示例:

    python">import requests
    
    url = 'https://www.baidu.com'
    response = requests.get(url)
    print(response.text)
    
  • BeautifulSoup是一个HTML/XML解析库,可以将网页中的HTML/XML文档解析为Python对象,方便数据提取。以下是一个使用BeautifulSoup解析HTML文档的示例:

    python">from bs4 import BeautifulSoup
    
    html_doc = """
    <html>
    <head>
        <title>测试页面</title>
    </head>
    <body>
        <h1>这是一个标题</h1>
        <p>这是一个段落</p>
    </body>
    </html>
    """
    
    soup = BeautifulSoup(html_doc, 'html.parser')
    print(soup.title.string)
    print(soup.h1.string)
    print(soup.p.string)
    
  • Scrapy是一个爬虫框架,可以用于抓取大规模网站数据。它提供了强大的数据提取、数据处理和数据存储能力。以下是一个使用Scrapy爬取网站数据的示例:

python">import scrapy

class MySpider(scrapy.Spider):
    name = 'myspider'
    start_urls = ['https://www.baidu.com']

    def parse(self, response):
        title = response.css('title::text').get()
        print(title)

DEMO实例 (JD女装搜素页面)

python">import requests,re,time,random,json
from setting import *
from lxml import etree
from openpyxl import workbook

# 1. JD的女装搜索页面地址
url = 'https://search.jd.com/Search?keyword=%E8%BF%9E%E8%A1%A3%E8%A3%99&enc=utf-8&wq=%E8%BF%9E%E8%A1%A3%E8%A3%99&pvid=564f87d9957647e983e28aca487a50d2'

# 2. 保存文件名称
excel_name = "保存文件名称.xlsx"

# 准备接受文件
wb = workbook.Workbook()
wb.create_sheet("JD",0)
sheet = wb["JD"]

#访问第一次查找网页
response = get_gen_info(url=url, headers=headers)
tree = etree.HTML(response)

url_list = tree.xpath(tree_path)

if True:
    response = get_info(url=base_url.format(url_list[2]), headers=headers2)
    tree = etree.HTML(response)
    sss = tree.xpath('//ul[@class="parameter2 p-parameter-list"]/li/text()')
    sss = [i.split(':',1) for i in sss]
    dict_detail = {k.strip():v.strip() for k,v in dict(sss).items()}

    _ = [i for i in dict_detail.values()]
    
title = []

# 逐个访问网页详情
for i in url_list:
    response = get_info(url=base_url.format(i), headers=headers2)
    tree = etree.HTML(response)
    sss = tree.xpath('//ul[@class="parameter2 p-parameter-list"]/li/text()')
    sss = [i.split(':',1) for i in sss]
    dict_detail = {k.strip():v.strip() for k,v in dict(sss).items()}


    if not title:
        title = [i for i in dict_detail.keys()]
        sheet.append(title)
        print(title)

    vs = []
    for k in title:
        vs.append( dict_detail.get(k, None))
        
    print(vs)
        
    if vs:
        sheet.append(vs) #准备存入excel

    wb.save(excel_name) # 保存入 excel 表格
    
    # 随机停顿时间
    print("^"*50)
    time.sleep(random.randint(1, 4))

http://www.niftyadmin.cn/n/250636.html

相关文章

【C++类和对象】类和对象(中):构造函数 {六个默认成员函数;构造函数的概念及特性;编译器自动生成的构造函数;默认构造函数}

一、类的六个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员函数。 默认成员函数&#xff1a;用户没有显式实现&#xff0c;编译器…

SpringBoot的创建及配置文件

文章目录&#xff1a;一.Spring项目的创建&#xff08;1&#xff09;SpringBoot的含义 &#xff08;2&#xff09;SpringBoot的优点 &#xff08;3&#xff09;项目目录的运行和介绍 二.SpringBoot的配置文件 &#xff08;1&#xff09;配置文件的作用 &#xff08;2&#xff0…

Faster RCNN系列5——RoI Pooling与全连接层

Faster RCNN系列&#xff1a; Faster RCNN系列1——Anchor生成过程 Faster RCNN系列2——RPN的真值与预测值概述 Faster RCNN系列3——RPN的真值详解与损失值计算 Faster RCNN系列4——生成Proposal与RoI Faster RCNN系列5——RoI Pooling与全连接层 在RPN网络中&#xff0c;已…

《低代码PaaS驱动集团企业数字化创新白皮书》-低代码PaaS应对行业集团企业数字化应用的需求(金融)

低代码PaaS应对行业集团企业数字化应用的需求 金融 金融行业整体处在数字化转型前沿&#xff0c;随着金融与数字技术的深度融合&#xff0c;以客户体验为中心的服务理念的不断深化&#xff0c;伴随其可持续发展模式的不断推进&#xff0c;金融服务形态也发生了根本性变化。然…

十二、详解Kubernetes存储卷的技术原理

Kubernetes存储卷是Kubernetes中用于持久化存储数据的一种抽象概念。它们允许容器在不同的Pod之间共享数据,并且可以在Pod重新调度或迁移时保留数据。本文将详细介绍Kubernetes存储卷的原理。 1.存储卷的概念 Kubernetes存储卷是为了解决容器化环境下数据持久化的问题而引入…

从申请到调用:全国快递物流查询 API 使用教程

引言 面对越来越多的快递需求和快递公司的日益增多&#xff0c;手动查询快递状态的工作变得愈发繁琐。此时&#xff0c;一个全国快递物流查询 API 的出现能够极大地提高查询的效率和准确性&#xff0c;解决人工查询的问题&#xff0c;为用户提供更加便捷的服务体验。全国快递物…

波奇学C++:缺省参数,函数重载,引用

缺省函数&#xff1a;给定函数参数有默认值 int add(int a,int b1) {return ab; } int main() {printf("%d",add(2));return 0; } 3 如图&#xff0c;我们给有两个参数的函数只传了一个参数&#xff0c;依然可以运行起来原因是c支持默认参数&#xff0c;和python一…

2023年 中国制造业这三大趋势不可忽视

政府要掏1个亿奖励制造企业搞发展&#xff0c;我国制造业大翻身的时代来了吗&#xff1f; 4月12日成都日报电&#xff0c;为支持制造业创新发展&#xff0c;支持制造业数字化、智能化和绿色化转型升级&#xff0c;培育高精尖特企业&#xff0c;政府给扶持政策不说&#xff0c;…