• python爬虫----爬取淘宝数据


    引言

    前几周在做c#大作业,做的是一个水果系统,需要一些水果的数据,于是就去爬取淘宝数据,可是爬下来总是空数据,不知道是怎么回事,于是我百度了一下说selenium可以实现,然后我就把selenium学习了下,编写了一个爬取淘宝商品的代码.

    内容

    代码是用的是selenium 里的 webdriver,通过webdriver可以自动帮我们打开谷歌浏览器,然后跳入到淘宝界面,然后登录,进行爬取。和以往的爬虫不一样的是我们不用再去封装头。而且我们还可在程序里封装想要爬取的内容,比如“水果”

    具体代码意思都在注释,不懂可以看注释

    代码

    #-*- codeing = utf-8 -*-
    #@Time : 2020/11/3 20:34
    #@Author : 杨晓
    #@File : Fruit.py
    #@Software: PyCharm
    from selenium import webdriver
    import time
    from pymysql import *
    import re
    #输入数据
    def search_product(key):
        #获得输入框并输入要搜索的关键字key
        driver.find_element_by_id('q').send_keys(key)
        #点击搜索按钮
        driver.find_element_by_class_name("btn-search").click()
        #窗口最大化
        driver.maximize_window()
        #休眠15s来登录淘宝账号
        time.sleep(15)
        #获得总页数
        allPage = driver.find_element_by_xpath('//*[@id="mainsrp-pager"]/div/div/div/div[1]').text
        #re.findall('(d+)',allPage)返回一个列表元素
        allPage = re.findall('(d+)',allPage)[0]
        return int(allPage)
    
    # 获取数据
    def get_product():
        divs = driver.find_elements_by_xpath('//div[@class="items"]/div[@class="item J_MouserOnverReq  "]')
        for div in divs:
            #获取元素信息
            img = div.find_element_by_xpath('.//div[@class="pic"]/a/img').get_attribute('src')
            title = div.find_element_by_xpath('.//div[@class="row row-2 title"]/a').text
            price = div.find_element_by_xpath(".//strong").text
            payNums = div.find_element_by_xpath('.//div[@class="deal-cnt"]').text
            save_data(title,img,price,payNums)
    #保存数据
    def save_data(title,img,price,payNums):
        # 打开数据库连接(ip/数据库用户名/登录密码/数据库名)
        con = connect("localhost", "root", "root", "pachong")
        # 使用 cursor() 方法创建一个游标对象 cursor
        cursors = con.cursor()
        # 使用 execute()  方法执行 SQL 查询 返回的是你影响的行数
        cursors.execute("insert into fruit values(%s,%s,%s,%s,%s)", (None, title, img, price,payNums))
        # 使用 fetchone() 方法获取数据.
        con.commit()
        # 关闭数据库连接(别忘了)
        con.close()
    def main(keyWord):
        #获得总共页数
        allPage = search_product(keyWord)
        currentPage = 1
        while currentPage <= allPage:
            print("第{}页数据".format(currentPage))
            print("*****************************************")
            driver.get("https://s.taobao.com/search?q={}&s={}".format(keyWord,(currentPage-1)*44))
            driver.implicitly_wait(2)  #浏览器等待方法
            #driver.maximize_window()
            get_product()
            print("第{}页数据保存成功".format(currentPage))
            currentPage += 1
            print("*****************************************")
    if __name__ == '__main__':
        driver = webdriver.Chrome()
        driver.get("https://s.taobao.com/")
        main("水果")
    
    
    
  • 相关阅读:
    Java多线程模式(二)
    HDU 1232 畅通工程
    跨平台实现wchar_t转成char
    小学生玩ACM----优先队列
    JSTL标签急速秒杀jsp页面中的java代码(一)---Core标签库
    项目沟通技术和技巧
    自己写一个strcmp函数(C++)
    Linux Makefile文件编写详细步骤与实践
    JAVA之数组查询binarySearch()方法详解
    系统调用与标准库调用的区别
  • 原文地址:https://www.cnblogs.com/yangxiao-/p/14130247.html
Copyright © 2020-2023  润新知