iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python如何爬取某宝男装信息
  • 371
分享到

Python如何爬取某宝男装信息

2023-06-21 22:06:05 371人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容介绍了“python如何爬取某宝男装信息”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!实现步骤1. 分析目标网站 打开某宝首页, 输

本篇内容介绍了“python如何爬取某宝男装信息”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    实现步骤

    1. 分析目标网站

    打开某宝首页, 输入"男装"后点击"搜索", 则跳转到"男装"的搜索界面.

    空白处"右击"再点击"检查"审查网页元素, 点击"Network".

    1) 找到对应的URL, URL里的参数正是Query String Parameters的参数, 且请求方式是GET

    Python如何爬取某宝男装信息

    2) 我们请求该URL得到内容就是"Response"里的内容, 那么点击它来确认信息.

    Python如何爬取某宝男装信息

    3) 下拉看到"男装"字样, 那么再往下找, 并没有发现有关"男装"的商品信息.

    4) 任意复制一个商品信息, 空白处右击再点击"查看网页源代码", 在源码查找该商品, 即可看到该商品的信息.

    5) 对比网页源代码和"Response"响应内容, 发现源代码<script>..........</script>中的商品信息被替换, 这便是采用了js加密

    6) 如果去请求上面的URL, 得到的则是加密过的信息, 这时就可以利用selenium库来模拟浏览器, 进而得到商品信息.

    2. 获取单个商品界面

    请求网站

    # -*- coding: utf-8 -*-from selenium import WEBdriver   #从selenium导入浏览器驱动browser = webdriver.Chrome()   #声明驱动对象, 即Chrome浏览器def get_one_page():    '''获取单个页面'''    browser.get("https://www.xxxxx.com")  #请求网站

    输入"男装", 在输入之前, 需要判断输入框是否存在, 如果存在则输入"男装", 不存在则等待显示成功.

    # -*- coding: utf-8 -*-from selenium import webdriver  from selenium.webdriver.common.by import By                       #导入元素定位方法模块from selenium.webdriver.support.ui import WebDriverWait           #导入等待判断模块from selenium.webdriver.support import expected_conditions as EC  #导入判断条件模块browser = webdriver.Chrome()   def get_one_page():    '''获取单个页面'''    browser.get("Https://www.xxxxx.com")     input = WebDriverWait(browser,10).until(                       #等待判断        EC.presence_of_element_located((By.CSS_SELECTOR,"#q")))    #若输入框显示成功,则获取,否则等待    input.send_keys("男装")                                         #输入商品名称

    下一步就是点击"搜索"按钮, 按钮具有属性: 可点击, 那么加入判断条件.

    # -*- coding: utf-8 -*-from selenium import webdriver   from selenium.webdriver.common.by import By  from selenium.webdriver.support.ui import WebDriverWait  from selenium.webdriver.support import expected_conditions as EC  browser = webdriver.Chrome()   def get_one_page():    '''获取单个页面'''    browser.get("https://www.xxxxx.com")      input = WebDriverWait(browser,10).until(                               EC.presence_of_element_located((By.CSS_SELECTOR,"#q")))    #    input.send_keys("男装")       button = WebDriverWait(browser,10).until(                                                        #等待判断        EC.element_to_be_clickable((By.CSS_SELECTOR,"#J_TSearchFORM > div.search-button > button"))) #若按钮可点击, 则获取, 否则等待    button.click()                                                                                   #点击按钮

    获取总的页数, 同样加入等待判断.

    # -*- coding: utf-8 -*- import refrom selenium import webdriverfrom selenium.common.exceptions import TimeoutExceptionfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECbrowser = webdriver.Chrome()def get_one_page():    '''获取单个页面'''    browser.get("https://www.xxxxx.com")    input = WebDriverWait(browser, 10).until(        EC.presence_of_element_located((By.CSS_SELECTOR, "#q")))    input.send_keys("男装")    button = WebDriverWait(browser, 10).until(        EC.element_to_be_clickable(            (By.CSS_SELECTOR, "#J_TSearchForm > div.search-button > button")))    button.click()      pages = WebDriverWait(browser, 10).until(  # 等待判断        EC.presence_of_element_located(            (By.CSS_SELECTOR, "#mainsrp-pager > div > div > div > div.total")))  # 若总页数加载成功,则获取总页数,否则等待     return pages.textdef main():    pages = get_one_page()    print(pages)if __name__ == '__main__':    main()

    打印出来的不是我们想要的结果, 利用正则表达式获取, 最后再利用try...except捕捉异常

    # -*- coding: utf-8 -*-import refrom selenium import webdriver   from selenium.common.exceptions import TimeoutException   from selenium.webdriver.common.by import By  from selenium.webdriver.support.ui import WebDriverWait  from selenium.webdriver.support import expected_conditions as EC  browser = webdriver.Chrome()  def get_one_page():    '''获取单个页面'''    try:        browser.get("https://www.xxxxx.com")          input = WebDriverWait(browser,10).until(      EC.presence_of_element_located((By.CSS_SELECTOR,"#q")))            input.send_keys("男装")           button = WebDriverWait(browser,10).until(      EC.element_to_be_clickable((By.CSS_SELECTOR,"#J_TSearchForm > div.search-button > button")))         button.click()                    pages = WebDriverWait(browser,10).until(      EC.presence_of_element_located((By.CSS_SELECTOR,"#mainsrp-pager > div > div > div > div.total")))          return pages.text    except TimeoutException:        return get_one_page()   #如果超时,继续获取def main():    pages = get_one_page()    pages = int(re.compile("(\d+)").findall(pages)[0]) #采用正则表达式提取文本中的总页数    print(pages)if __name__ == '__main__':    main()

    关于Selenium的更多内容,可参看官方文档https://selenium-Python.readthedocs.io/waits.html

    3. 获取多个商品界面

    采用获取"到第 页"输入框方式, 切换到下一页, 同样是等待判断

    需要注意的是, 最后要加入判断: 高亮是否是当前页  

    def get_next_page(page):    try:        input = WebDriverWait(browser, 10).until(                                                                                                     EC.presence_of_element_located((By.CSS_SELECTOR, "#mainsrp-pager > div > div > div > div.form > input")))                       # 若输入框加载成功,则获取,否则等待        input.send_keys(page)                                                                                                               # 输入页码        button = WebDriverWait(browser, 10).until(                                                                                                   EC.element_to_be_clickable((By.CSS_SELECTOR, "#mainsrp-pager > div > div > div > div.form > span.btn.J_Submit")))               # 若按钮可点击,则获取,否则等待        button.click()                                                                                                                      # 点击按钮        WebDriverWait(browser,10).until(            EC.text_to_be_present_in_element((By.CSS_SELECTOR,"#mainsrp-pager > div > div > div > ul > li.item.active > span"),str(page)))  # 判断高亮是否是当前页    except TimeoutException:                                                                                                                # 超时, 继续请求        return get_next_page(page)def main():    pages = get_one_page()    pages = int(re.compile("(\d+)").findall(pages)[0])    for page in range(1,pages+1):        get_next_page(page)if __name__ == '__main__':    main()

    4. 获取商品信息

    首先, 判断信息是否加载成功, 紧接着获取源码并初始化, 进而解析.

    需要注意的是, 在"get_one_page"和"get_next_page"中调用之后, 才可执行

    def get_info():    """获取详情"""    WebDriverWait(browser,20).until(EC.presence_of_element_located((        By.CSS_SELECTOR,"#mainsrp-itemlist .items .item")))                #判断商品信息是否加载成功    text = browser.page_source                                             #获取网页源码    html = pq(text)                                                        #初始化网页源码    items = html('#mainsrp-itemlist .items .item').items()                 #采用items方法会得到生成器    for item in items:                                                     #遍历每个节点对象        data = []        image = item.find(".pic .img").attr("data-src")                    #用find方法查找子孙节点,用attr方法获取属性名称        price = item.find(".price").text().strip().replace("\n","")        #用text方法获取文本,strip()去掉前后字符串,默认是空格        deal = item.find(".deal-cnt").text()[:-2]        title = item.find(".title").text().strip()        shop = item.find(".shop").text().strip()        location = item.find(".location").text()        data.append([shop, location, title, price, deal, image])        print(data)

    5. 保存到MySQL数据库

    def save_to_Mysql(data):    """存储到数据库"""    # 创建数据库连接对象    db= pymysql.connect(host = "localhost",user = "root",passWord = "password",port = 3306, db = "spiders",charset = "utf8")    # 获取游标    cursor = db.cursor()    #创建数据库    cursor.execute("CREATE TABLE IF NOT EXISTS {0}(shop VARCHAR(20),location VARCHAR(10),title VARCHAR(255),price VARCHAR(20),deal VARCHAR(20), image VARCHAR(255))".format("男装"))    #sql语句    sql = "INSERT INTO {0} values(%s,%s,%s,%s,%s,%s)".format("男装")    try:            #传入参数sql,data        if cursor.execute(sql,data):            #插入数据库            db.commit()            print("********已入库**********")    except:        print("#########入库失败#########")        #回滚,相当什么都没做        db.rollback()    #关闭数据库    db.close()

    完整代码

    # -*- coding: utf-8 -*-'''有需要Python学习资料的小伙伴吗?小编整理一套Python资料和pdf,感兴趣者可以加学习群:548377875,反正闲着也是闲着呢,不如学点东西啦~~'''import reimport pymysqlfrom selenium import webdriver   from selenium.common.exceptions import TimeoutExceptionfrom selenium.webdriver.common.by import By  from selenium.webdriver.support.ui import WebDriverWait  from selenium.webdriver.support import expected_conditions as EC  from pyquery import PyQuery as pqbrowser = webdriver.Chrome()  def get_one_page(name):    '''获取单个页面'''    print("-----------------------------------------------获取第一页-------------------------------------------------------")    try:        browser.get("https://www.xxxxx.com")          input = WebDriverWait(browser,10).until(                                    EC.presence_of_element_located((By.CSS_SELECTOR,"#q")))           input.send_keys(name)           button = WebDriverWait(browser,10).until(                                                                     EC.element_to_be_clickable((By.CSS_SELECTOR,"#J_TSearchForm > div.search-button > button")))         button.click()                    pages = WebDriverWait(browser,10).until(                                                                     EC.presence_of_element_located((By.CSS_SELECTOR,"#mainsrp-pager > div > div > div > div.total")))          print("----即将解析第一页信息----")        get_info(name)        print("----第一页信息解析完成----")        return pages.text    except TimeoutException:        return get_one_page(name)   def get_next_page(page,name):     """获取下一页"""     print("---------------------------------------------------正在获取第{0}页----------------------------------------".format(page))     try:        input = WebDriverWait(browser, 10).until(             EC.presence_of_element_located((By.CSS_SELECTOR, "#mainsrp-pager > div > div > div > div.form > input")))                               input.send_keys(page)                                                                                                                       button = WebDriverWait(browser, 10).until(            EC.element_to_be_clickable((By.CSS_SELECTOR, "#mainsrp-pager > div > div > div > div.form > span.btn.J_Submit")))                       button.click()                                                                                                                              WebDriverWait(browser,10).until(             EC.text_to_be_present_in_element((By.CSS_SELECTOR,"#mainsrp-pager > div > div > div > ul > li.item.active > span"),str(page)))          print("-----即将解析第{0}页信息-----".format(page))        get_info(name)        print("-----第{0}页信息解析完成-----".format(page))     except TimeoutException:                                                                                                                        return get_next_page(page,name)def get_info(name):    """获取详情"""     WebDriverWait(browser,20).until(EC.presence_of_element_located((        By.CSS_SELECTOR,"#mainsrp-itemlist .items .item")))                    text = browser.page_source                                                 html = pq(text)                                                            items = html('#mainsrp-itemlist .items .item').items()                     for item in items:                                                             data = []        image = item.find(".pic .img").attr("data-src")                            price = item.find(".price").text().strip().replace("\n","")                deal = item.find(".deal-cnt").text()[:-2]        title = item.find(".title").text().strip()        shop = item.find(".shop").text().strip()        location = item.find(".location").text()        data.append([shop, location, title, price, deal, image])        for dt in data:            save_to_mysql(dt,name)def save_to_mysql(data,name):    """存储到数据库"""    db= pymysql.connect(host = "localhost",user = "root",password = "password",port = 3306, db = "spiders",charset = "utf8")    cursor = db.cursor()    cursor.execute("CREATE TABLE IF NOT EXISTS {0}(shop VARCHAR(20),location VARCHAR(10),title VARCHAR(255),price VARCHAR(20),deal VARCHAR(20), image VARCHAR(255))".format(name))    sql = "INSERT INTO {0} values(%s,%s,%s,%s,%s,%s)".format(name)    try:        if cursor.execute(sql,data):            db.commit()         print("********已入库**********")    except:        print("#########入库失败#########")        db.rollback()    db.close()def main(name):    pages = get_one_page(name)    pages = int(re.compile("(\d+)").findall(pages)[0])    for page in range(1,pages+1):       get_next_page(page,name)if __name__ == '__main__':    name = "男装"    main(name)

    “Python如何爬取某宝男装信息”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

    --结束END--

    本文标题: Python如何爬取某宝男装信息

    本文链接: https://www.lsjlt.com/news/301085.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Python如何爬取某宝男装信息
      本篇内容介绍了“Python如何爬取某宝男装信息”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!实现步骤1. 分析目标网站 打开某宝首页, 输...
      99+
      2023-06-21
    • Python爬虫项目--爬取某宝男装信息
      本次爬取用到的知识点有: 1. selenium 2. pymysql 3  pyquery 正文 1. 分析目标网站 1. 打开某宝首页, 输入"男装"后点击"搜索", 则跳转到"男装"的搜索界面. 2. 空白处"右击"再点击"检查"审...
      99+
      2023-01-30
      爬虫 男装 项目
    • Python爬虫实战之爬取某宝男装信息
      目录知识点介绍实现步骤1. 分析目标网站2. 获取单个商品界面3. 获取多个商品界面4. 获取商品信息5. 保存到MySQL数据库完整代码知识点介绍 本次爬取用到的知识点有: 1. ...
      99+
      2022-11-12
    • python 爬取淘宝模特信息
        通过本篇博文,介绍一下我对指定信息进行爬取的时候的思路,顺便贴一下代码。 一、首先获取想要爬取的网站的url链接的规则变化可以看出来该网站页面的url结构简单,变化的只是https://mm.taobao.com/json/reques...
      99+
      2023-01-31
      模特 淘宝 信息
    • 用python来爬取某鱼的商品信息(1/2)
      目录 前言 第一大难题——找到网站入口 曲线救国  模拟搜索 第二大难题——登录 提一嘴 登录cookie获取 第一种 第二种  第四大难题——无法使用导出的cookie  原因 解决办法 最后 出现小问题 总结 下一篇博客(大部分代码实现...
      99+
      2023-08-31
      python 开发语言
    • 用python来爬取某鱼的商品信息(2/2)
      目录 上一篇文章 本章内容 设置浏览器为运行结束后不关闭(可选) 定位到搜索框的xpath地址 执行动作 获取cookie 保存为json文件 修改cookie的sameSite值并且导入cookie 导入cookie(出错) 导入cook...
      99+
      2023-08-31
      python 开发语言 爬虫 selenium html
    • 使用Python怎么爬取淘宝的商品信息
      这期内容当中小编将会给大家带来有关使用Python怎么爬取淘宝的商品信息,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrapy...
      99+
      2023-06-14
    • Python如何爬取b站番剧信息
      Python如何爬取b站番剧信息,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。相信很多人都是B站的粉丝吧因为确实是一个类目都比较齐全的网站,还有各种各样的新番,这是其他网站没有...
      99+
      2023-06-02
    • 用python爬取分析淘宝商品信息详解技术篇
      目录背景介绍一、模拟登陆二、爬取商品信息1. 定义相关参数2. 分析并定义正则3. 数据爬取三、简单数据分析1.导入库2.中文显示3.读取数据4.分析价格分布5.分析销售地分布6.词...
      99+
      2022-11-12
    • 如何使用python爬虫爬取大学排名信息
      这篇文章将为大家详细讲解有关如何使用python爬虫爬取大学排名信息,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 这次爬取的网址请搜索“阿凡题”(纯技术讨论)“阿凡题”(纯技术讨论) 在该网址选择查院校...
      99+
      2023-06-02
    • Python如何爬取汽车之家新闻信息
      这篇文章给大家介绍Python如何爬取汽车之家新闻信息,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。为大家介绍一个爬取汽车之家的新闻标题,链接.以及相关图片并下载的Python项目案例,用基本的BeautifulSou...
      99+
      2023-06-02
    • Python如何爬取英雄联盟贴吧信息
      这期内容当中小编将会给大家带来有关Python如何爬取英雄联盟贴吧信息,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。今天为大家介绍一个实现面向对象构建爬虫对象,爬取英雄联盟贴吧信息的案例,里面涵盖了最最基...
      99+
      2023-06-02
    • python项目实战:利用selenium+浏览器爬取淘宝商品信息
      前言今天为大家介绍一个Python利用selenium打开浏览器的方式来爬取淘宝商品的信息,下面就来看看,关于selenium的知识点,是如何做到控制浏览器获取网站的信息导入第三方库...
      99+
      2023-06-02
    • Python如何爬取某拍短视频
      这篇文章主要介绍Python如何爬取某拍短视频,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、抓取目标目标网址:美拍视频二、工具使用开发环境:win10、python3.7开发工具:pycharm、Chrome工具...
      99+
      2023-06-15
    • Python如何用三步爬取全网情诗信息
      Python如何用三步爬取全网情诗信息,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言还在为如何写情书而苦恼吗?还在担心自己文采不够?没关系、Python带你穿越时空领略...
      99+
      2023-06-02
    • 如何用python+selenium爬取淘宝美食
      今天就跟大家聊聊有关如何用python+selenium爬取淘宝美食,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言今天为大家介绍一个利用Python的selenium打开浏览器的...
      99+
      2023-06-02
    • c#如何爬取优酷电影信息
      这篇文章将为大家详细讲解有关c#如何爬取优酷电影信息,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。爬虫步骤加载页面解析数据保存数据继第一篇文档后的爬虫进阶,本文章主要是对上一篇的进阶。实现的功能主要为:1...
      99+
      2023-06-06
    • python如何进行爬取链家二手房租赁信息
      本篇文章给大家分享的是有关python如何进行爬取链家二手房租赁信息,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。大家在外打拼的时候都需要租房子住,于是大家就会上各种房子租赁的...
      99+
      2023-06-02
    • Python中如何爬取中医药网站中药的信息
      这篇文章给大家介绍Python中如何爬取中医药网站中药的信息,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。现在我们90后很多人都步入了养生状态,开始泡枸杞红枣了,哈哈,经常在朋友圈里面看到,这是不是对自己的一种调侃呢,...
      99+
      2023-06-02
    • Python如何一键爬取你所关心的书籍信息
      本篇文章给大家分享的是有关Python如何一键爬取你所关心的书籍信息,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言 平时看到的豆瓣爬虫基本都是爬豆瓣top100电...
      99+
      2023-06-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作