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("水果")


原文地址:https://www.cnblogs.com/yangxiao-/p/14130247.html