Python爬虫实战之爬淘宝商品--selenium+Xpath

这篇具有很好参考价值的文章主要介绍了Python爬虫实战之爬淘宝商品--selenium+Xpath。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

代码链接
利用selenium来自动翻页爬取淘宝商品的标题,价格,销量,产地信息。
python爬淘宝商品数据seleniun,Python--数据收集,python,爬虫,selenium,网络爬虫

导入库:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver import Chrome
import time
import json
import  pandas  as  pd

注意自己配置好python环境(谷歌驱动…)

怎么爬

思路

利用selenium,手动登录获取cookie保存在本地用于登录平台(便于测试代码),访问商品页url通过Xpath选中对象拿数据,翻页,通过Xpath选中对象拿数据,翻页,通过Xpath选中对象拿数据…

为什么使用selenium?
ans:
1.可行性:
网页源代码中是没有所需数据的。
在淘宝的关键词搜索页进行页面切换,可以发现浏览器顶部的地址栏url也是没有任何变化,那么就抓包吧,通过开发者工具进行抓包发现所需数据都放在一个js请求的响应中。
python爬淘宝商品数据seleniun,Python--数据收集,python,爬虫,selenium,网络爬虫
在Headers中观察请求发现数据请求地址url(get请求),但是地址中有加密参数要破解,作者暂时还搞不定,不过b站有教哈。(加密参数:sign,t。)
(作者感觉这个t应该就是时间)

python爬淘宝商品数据seleniun,Python--数据收集,python,爬虫,selenium,网络爬虫
所以我用selenium,因为成功了…

注意:
使用selenium时,在搜索后的商品页中需要下拉滚动页面到底部才能获取当前页所有的商品基本展示信息。
原理猜测:商品页中商品展示使用Ajax动态请求,目的是为了可以在不重载网页的条件下,与服务器进行数据交互,更新页面的局部数据。(使用Ajax请求对于流量费的节省和阻碍网络爬虫都有帮助)

在利用selenium进行翻页时,下面这个搜索栏可能会把你的翻页按钮给遮住,导致selenium翻页失败。
怎么办?
用JavaScript模拟点击,这样就无所谓挡不挡住翻页按钮的问题了。

webd.execute_script("arguments[0].click();", element)

python爬淘宝商品数据seleniun,Python--数据收集,python,爬虫,selenium,网络爬虫

有的时候可能触发了反爬机制,新的商品页面代码结构发生变化,让原本的Xpath语句定位不到商品,不过作者控制了爬取速度,重新去爬几次后,还是能避免页面结构发生变化的情况。

最后我在测试代码的时候还发现了一个有趣的现象,大部分时候搜出来的商品页都是40多页没问题,可有那么几次只有11页。(希望知道的朋友可以评论区解答一下哈)

实现

模拟登录拿cookie

这个代码单独运行一次就好,目的是拿下自己的cookie信息保存在本地,方便后续的代码爬取效果测试不用重复手动登录。

获取cookie
def hq_cookie():
    weba = webdriver.Chrome()
    weba.maximize_window()
    weba.get('https://www.taobao.com/')
    weba.delete_all_cookies()
    time.sleep(50) #50秒内登录好,根据自己的情况改哈
    dictcookies = weba.get_cookies() #拿下cookies 格式为字典
    jsoncookies = json.dumps(dictcookies) #字典转json
    with open('cookies.txt', 'w') as f:
        f.write(jsoncookies)  #写入cookies文件
    weba.quit()

爬取单页数据

第一步:通过本地cookie登录后,跳转到关键字搜索页的界面
第二步:开发者分析页面代码结构,写xpath进行对象定位,提取数据(商品标题,价格,销量,产地,页数)

python爬淘宝商品数据seleniun,Python--数据收集,python,爬虫,selenium,网络爬虫
xpath语句:

#标题
//div[@class='Title--title--jCOPvpf']

#其他信息
//div[@class='Price--priceWrapper--Q0Dn7pN 
def main():
   #one-star
    web = webdriver.Chrome()
    web.maximize_window()
    url="https://www.taobao.com/"
    web.get(url)
    with open('./cookies.txt', 'r') as f:
        cookies = f.read()
    cookies = json.loads(cookies)
    #装载cookie
    for cookie in cookies:
        if 'expiry' in cookie:
            del cookie['expiry']
        else:
             web.add_cookie(cookie)
    web.get(url)
    time.sleep(5)
    url="https://s.taobao.com/search?commend=all&ie=utf8&initiative_id=tbindexz_20170306&q=FL%20studio&search_type=item&sourceId=tb.index&spm=a21bo.jianhua.201856-taobao-item.2&ssid=s5-e"
    web.execute_script(f"window.open('{url}', 'new_window')")
    time.sleep(3)
    web.switch_to.window(web.window_handles[-1])
    # one-end

   #滑动页面到底部
    for i in range(3):
        web.execute_script('window.scrollTo(0,document.body.scrollHeight)')
        time.sleep(2)
    #xpath定位
    obj_tit = web.find_elements(By.XPATH,"//div[@class='Title--title--jCOPvpf']")
    obj_jg_xl = web.find_elements(By.XPATH, "//div[@class='Price--priceWrapper--Q0Dn7pN ']")
    for i in range(len(obj_tit)):
        title=obj_tit[i].text.replace(" ","").strip()
        hb=obj_jg_xl[i].find_elements(By.XPATH,".//span")[0].text.strip().replace(" ","")
        jgz=obj_jg_xl[i].find_elements(By.XPATH,".//span")[1].text.strip().replace(" ","")
        jgx=obj_jg_xl[i].find_elements(By.XPATH,".//span")[2].text.strip().replace(" ","")
        fkrs = obj_jg_xl[i].find_elements(By.XPATH, ".//span")[3].text.strip().replace(" ", "")
        cd=obj_jg_xl[i].find_elements(By.XPATH, ".//div")
        cdd=" "
        for i in range(len(cd)):
            cdd= cdd+cd[i].text.strip().replace(" ", "")
        jg=hb+jgz+jgx
        print(title,jg,fkrs,cdd)
        titles.append(title)
        jgs.append(jg)
        fkrss.append(fkrs)
        cdds.append(cdd)
    #爬取总计页数
    k = web.find_element(By.XPATH,"//*[@class='next-pagination-display']")
    cs=k.text.split("/")[-1]
    print(f"共计{cs}页数据")
    #开始爬取多页数据
    hqsj(web,int(cs)-1)

爬取多页数据

相较单页数据爬取就多了一步翻页的操作哈.文章来源地址https://www.toymoban.com/news/detail-764433.html

def hqsj(web,cs):
    for i in range(cs):
        an=web.find_element(By.XPATH,"//*[@class='next-icon next-icon-arrow-right next-xs next-btn-icon next-icon-last next-pagination-icon-next']")
        web.execute_script("arguments[0].click();", an)
        time.sleep(2)
        ....
        按单页爬取的逻辑来就好,(复制粘贴)

总结:

if __name__ == '__main__':
    titles = []
    jgs = []
    fkrss = []
    cdds = []
    main()
    data = {'标题': titles, '客单价': jgs, '销量': fkrss, '产地': cdds}
    df = pd.DataFrame(data)
    df.to_excel('FL销售.xlsx', index=False)

到了这里,关于Python爬虫实战之爬淘宝商品--selenium+Xpath的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python爬虫实战之爬取web网易云音乐——解析

    首先我们要进入网易云的web页面在页面中我们随意选择一首歌曲,打开开发者工具查看响应的界面。 在这些页面中我们需要查找存储有音乐文件的url,这是我们可以打开全局搜索直接搜索与音频文件后缀相关的文件。(当然这这里可能会白忙活) 因为我们打开媒体文件,看见的

    2024年02月13日
    浏览(29)
  • Python Selenium 爬虫淘宝案例

    在前一章中,我们已经成功尝试分析 Ajax 来抓取相关数据,但是并不是所有页面都可以通过分析 Ajax 来完成抓取。比如,淘宝,它的整个页面数据确实也是通过 Ajax 获取的,但是这些 Ajax 接口参数比较复杂,可能会包含加密密钥等,所以如果想自己构造 Ajax 参数,还是比较困

    2024年02月20日
    浏览(28)
  • 基于python淘宝商品数据爬虫分析可视化系统 网络爬虫+Flask框架+MySQL数据库 大数据 毕业设计

    python语言、Flask框架、淘宝商品数据、selenium网络爬虫、MySQL数据库、数据分析、Echarts可视化大数据毕业设计、爬取 Selenium网络爬虫淘宝商品数据可视化系统是一个基于Python和Selenium的Web爬虫应用程序,可以实现对淘宝上特定商品的价格、销量、评价等数据进行自动化抓

    2024年02月16日
    浏览(41)
  • python爬虫selenium被检测处理(适用淘宝登录)

    1.增加这个是防止检测是webdriver谷歌驱动调起的请求,通用大部分 2.修改chromedriver里面的内容: 用Notepad++打开chromedriver文件,查找  $cdc_  修改这个数值。 3.修改User-Agent的值,如果你长时间使用相同 的User-Agent:可能会被检测到加入黑名单, 这时候你修改User-Agent值就可能绕开

    2024年02月09日
    浏览(28)
  • 淘宝免费爬虫数据 商品详情数据 商品销售额销量API

    场景:一个宽敞明亮的办公室,一位公司高管坐在办公桌前。 高管(自言自语):淘宝,这个平台上商品真是琳琅满目,应该有不少销售数据吧。我该怎么利用这些数据呢? 突然,房间里出现了一个神秘的人物,穿着时尚,带着深邃的眼神。 神秘人(笑着):你叫的数据,

    2024年02月11日
    浏览(28)
  • Selenium实战案例之爬取js加密数据

    Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能够很好得

    2024年02月07日
    浏览(38)
  • 获取淘宝商品销量数据的方法分享(API、爬虫技术)

    随着电子商务的飞速发展,获取淘宝商品销量数据的需求越来越强烈。无论是商家、分析师还是研究人员,都需要这些数据来了解市场趋势、竞争对手情况以及制定营销策略。本文将分享如何通过API和爬虫技术获取淘宝商品销量数据。 一、API获取数据 淘宝开放平台提供了丰

    2024年01月22日
    浏览(49)
  • 【Python爬虫】基于selenium库爬取京东商品数据——以“七夕”为例

    小白学爬虫,费了一番功夫终于成功了哈哈!本文将结合本人踩雷经历,分享给各位学友~ 用写入方式打开名为data的csv文件,并确定将要提取的五项数据。 上面第一行代码值得一提,driver =  webdriver.Edge()括号内为Edge浏览器驱动程序地址,需要在Edge浏览器设置中查找Edge浏览器

    2024年02月06日
    浏览(40)
  • Selenium实战之Python+Selenium爬取京东商品数据

    实战目标:爬取京东商品信息,包括商品的标题、链接、价格、评价数量。 代码核心在于这几个部分: 其一:使用元素定位来获取页面上指定需要抓取的; 其二:将页面上定位得到的数据永久存储到本地文件中。 具体来梳理一下从访问URL开始到爬取数据整个流程下来

    2023年04月13日
    浏览(32)
  • [爬虫篇]Python爬虫之爬取网页音频_爬虫怎么下载已经找到的声频

    audio_DATA_get = requests.get(url=audio_DATA,headers=headers) audio_DATA_get_text = audio_DATA_get.text audio_DATA_download_url = re.findall(‘“src”:“(.*?)”’,audio_DATA_get_text) print(audio_DATA_download_url) download_data_url = audio_DATA_download_url[0] try: open_download_data_url = urllib.request.urlopen(download_data_url) except: print(downlo

    2024年04月22日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包