大数据 爬虫Python AI Sql

Python-爬取淘宝搜索结果

2019-07-03  本文已影响0人  ZFJ_张福杰

前言

我们如果想买一个东西,可以去淘宝搜索,然后选取心仪的商品存到购物车,然后做综合对比;但是对于程序员来说我们可以把搜索结果爬取下来,爬取解析店铺评分、商品价格、店铺等级、购买人数等等,综合比较,还可以生成通过Python的报表库自动化生成报表,比如Matplotlib;然后再买!😂😂😂当然不可能的,谁买个东西还会这么傻逼🤒,这里主要做学习使用!

搜索结果

image

爬取结果

image

详细代码

详细过程已经写在注释里面了🤠
先爬取网页的HTML

# 爬取函数
def start_search_result(keys):
 
    # 创建浏览器对象
    browner = webdriver.Chrome()
    browner.get('https://www.taobao.com/')
 
    # 给搜索框赋值
    kw = browner.find_element_by_id("q")#q
    kw.send_keys(keys)
 
    # 模拟点击搜索按钮事件
    iconfont = browner.find_element_by_class_name('search-button')
    iconfont.click()
 
    # 滑动至浏览器下端
    browner.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(5)
 
    # 获取网页源码
    html = browner.page_source
 
    # 获取HTML数据
    html_etree = etree.HTML(html)
    
    return html_etree

解析爬取的结果

def analysis_html(html_etree):
    # 获取商品列表
    goods_list = html_etree.xpath('//div[@class="items"]/div')
 
    #存储字典的列表
    goods_map_list = []
 
    for k_value in goods_list:
        # 获取图片地址
        pic_src = "https:" + k_value.xpath('./div[@class="pic-box J_MouseEneterLeave J_PicBox"]/div[@class="pic-box-inner"]/div[@class="pic"]/a/img/@src', stream=True)[0]
 
        # 获取价格
        price = "¥" + k_value.xpath('./div[2]/div[1]/div[@class="price g_price g_price-highlight"]/strong/text()', stream=True)[0]
 
        # 获取标题
        title_list = k_value.xpath('./div[2]/div[2]/a/text()', stream=True)
        title = "".join(title_list).strip().replace("\n", "")
        
        # 获取店铺名
        shop_elem = k_value.xpath('./div[2]/div[3]/div[@class="shop"]/a/text()', stream=True)
        shop_name = "".join(shop_elem).replace("\n", "").strip()
        if(len(shop_name) == 0):
            shop_elem = k_value.xpath('./div[2]/div[3]/div[@class="shop"]/a/span[2]/text()', stream=True)
            shop_name = "".join(shop_elem).replace("\n", "").strip()
 
        infor_map = {}
        infor_map['pic'] = pic_src
        infor_map['price'] = price
        infor_map['title'] = title
        infor_map['shop'] = shop_name
        goods_map_list.append(infor_map)
 
    return goods_map_list


调取

#主函数
def main(search_key):
 
    # 先获取爬取的HTML文本
    html_etree = start_search_result(search_key)
 
    # 解析HTML,将商品列表存到list里面
    goods_list = analysis_html(html_etree)
 
    for item in goods_list:
        print("标题:" + item["title"])
        print("价格:" + item["price"])
        print("图片:" + item["pic"])
        print("店铺:" + item["shop"])
 
        print('-' * 100)
 

输入你想要搜索的东西就好,比如我想要搜索“iPhone”:

#开始搜索iPhone并爬取相关结果
main("iPhone")

头文件

import time
from selenium import webdriver
from lxml import html
 
etree = html.etree

说明

DEMO==>https://download.csdn.net/download/u014220518/11257850

原文地址==>https://zfj1128.blog.csdn.net/article/details/93622436

结束语

欢迎各位大神提出宝贵的意见和建议,也欢迎大家进群交流365152048!

上一篇 下一篇

猜你喜欢

热点阅读