> 文章列表 > 【python】Python实现网络爬虫demo实例

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

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

前言

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

网络爬虫

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

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

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

    from bs4 import BeautifulSouphtml_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爬取网站数据的示例:

import scrapyclass 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女装搜素页面)

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) #准备存入excelwb.save(excel_name) # 保存入 excel 表格# 随机停顿时间print("^"*50)time.sleep(random.randint(1, 4))