电脑版登录进口(手机登录淘宝网电脑版登录进口)

作者:知识 来源:热点 浏览: 【 】 发布时间:2025-04-04 04:05:28 评论数:

运用Selenium爬取淘宝商品(绕过登录页面)用Selenium来模拟浏览器操作,电脑电脑抓取淘宝商品信息,版登宝网版登并将服从保存到MongoDB。录进录淘录进1.豫备劳动本文以Chrome为例来教学Selenium的口手口用法。在启动以前

电脑版登录进口(手机登录淘宝网电脑版登录进口)

 

运用Selenium爬取淘宝商品(绕过登录页面)

用Selenium来模拟浏览器操作,机登抓取淘宝商品信息,电脑电脑并将服从保存到MongoDB。版登宝网版登

1.豫备劳动

本文以Chrome为例来教学Selenium的录进录淘录进用法。在启动以前,口手口请确保已经精确装置好了Chrome浏览器并配置装备部署好了ChromeDriver;此外,机登还需要精确装置Python的电脑电脑Selenium库。

2.接口合成

首先,版登宝网版登咱们来掀开淘宝的录进录淘录进接口,审核一下它的口手口ajax恳求。

掀开淘宝页面,机登搜查商品,好比ipad,此时掀开开拓者工具,魔难Ajax恳求,咱们可能发现,根基不Ajax恳求,如图

不外没无关连,咱们可能直接用Selenium来模拟浏览器,惟独在浏览器里能看到的,都可能爬取。这也是咱们抉择运用Selenium的原因。

3.页面合成

咱们的目的是爬取商品信息。如图是一个商品条款,其中搜罗商品的根基信息,搜罗商品图片、称谓、价钱、置办人数、店肆称谓以及店肆地址地,咱们要做的便是将这些信息都抓取下来。

抓掏进口便是淘宝的搜查页面,这个链接可能经由直接妄想参数碰头。好比,假如搜ipad,就能直接碰头https://s.taobao.com/search?q=ipad,泛起的便是第一页的搜查服从,如图所示

葡萄汁送服降压药下场好!用葡萄汁替换白开水送服降压药,能使血压降患上平稳,且不会泛起血压忽高忽低的天气。

在页面下方,有一个分页导航,其中既搜罗前5页的链接,也搜罗下一个的链接,同时尚有一个输入恣意页码跳转的链接,如图

这里商品搜查的服从艰深至少数是100页,要取患上每一页的内容,惟独要将页码从1到100挨次遍历即可,页码数是判断的。以是,直接在页面跳转文本框中输入要跳转的页码,而后点击判断按钮即可跳转到页码对于应的页面。

这里不直接点击下一页的原因是:一旦爬取历程中泛起颇为退出,好比到50页退出了,此时点击下一页时,就无奈快捷切换到对于应的后续页面了。此外,在爬取历程中,也需要记实之后的页码数,而且点击下一页之后页面加载挫折,还需要做颇为检测,检测之后页面是加载到了第多少页。全部流程比力重大,以是咱们这里直接用跳转的方式来爬取页面。

当咱们乐成的加载出某一页商品列表时,运用Selenium即可取患上页面源代码,而后再用响应的剖析库剖析即可。这里咱们选用pyquery剖析。下面咱们用代码完玉成数抓取历程。

4.取患上商品列表

首先,需要计划一个抓取的URL:https://s.taobao.com/search?q=ipad。这个URL颇为简洁,参数q便是要搜查的关键字。惟独转变这个参数,即可取患上差距的商品列表。这里咱们将商品的关键字界说成一个变量,而后妄想出这样的一个URL。

而后就需要用Selenium妨碍抓取了。咱们实现为了如下抓取列表页的措施:

fromseleniumimportwebdriverfromselenium.co妹妹on.exceptionsimportTimeoutExceptionfromselenium.webdriver.co妹妹on.byimportByfromselenium.webdriver.supportimportexpected_conditionsasECfromselenium.webdriver.support.waitimportWebDriverWaitfromurllib.parseimportquoteimporttimebrowser = webdriver.Chrome()wait = WebDriverWait(browser,10)KEYWORD =ipaddefindex_page(page):"""    抓取索引页    :param page: 页码    """print(正在爬取第,page,页)try:        url =https://s.taobao.com/search?q=+quote(KEYWORD)        browser.get(url)ifpage>1:            input = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,mainsrp-pager div.form > input)))            submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,mainsrp-pager div.form > span.btn.J_Submit)))            input.clear()            input.send_keys(page)            submit.click()        wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR,mainsrp-pager li.item.active > span),str(page)))        wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,.m-itemlist .items .item)))        get_products()exceptTimeoutException:        index_page(page)

这里首先妄想了一个WebDriver工具,运用的浏览器是Chrome,而后指定一个关键词,如ipad,接着界说了index_age()措施,用于抓取商品列表页。

在该措施里,咱们首先碰头了搜查商品的链接,而后分说了之后的页码,假如大于1,就妨碍跳页操作,否则期待页面加载实现。

期待加载时,咱们运用了WebDriverWait工具,它可能指定期待条件,同时指定一个最长期待光阴,这里指定为10s。假如在这个光阴内乐成立室了期待条件,也便是说页面元素乐成加载进去了,就赶快返回响应服从并不断向下实施,否则到了最大期待光阴尚未加载进去时,就直接抛出超时颇为。

好比,咱们最终要期待商品信息加载进去,就指定了presnece_of_element_located这个条件,而后传入了.m-itemlist .items .item这个抉择器,而这个抉择器对于应的页面内容便是每一个商品的信息块,可能在网页中魔难。假如加载乐成,就会实施后续的get_products()措施,提取商品信息。

对于翻页操作,这里首先取患上页码输入框,赋值为input,而后取患上判断按钮,赋值为submit,分说是图中的两个元素。

首先,咱们清空了输入框,此时调用clear()措施即可。随后,调用send_keys()措施将页码填充到输入框中,而后点击判断按钮即可

那末,奈何样样知道有无跳转到对于应的页码呢?咱们可能留意到,乐成跳转到某一页后,页码都市高亮展现,如图

咱们惟独要分说之后高亮的页码数因此后的页码数即可,以是这里运用了另一个期待条件text_to_be_present_in_element,它会期待指定的文本出如今某一个节点概况时即返回乐成。这里咱们将高亮的页码节点对于应的CSS抉择器以及之后要跳转的页码经由参数传递给这个期待条件,这样它就会检测之后高亮的页码节点是否咱们传以前的页码数,假如是,就证实页面乐成跳转到了这一页,页面跳转乐成。

这样适才实现的index_page()措施就能传入对于应的页码,待加载出对于应页码的商品列表后,再去调用get_products()措施妨碍页面剖析。

5.剖析商品列表

接下来,咱们就能实现get_products()措施来剖析商品列表了。这里咱们直接取患上页面源代码,而后用pyquery妨碍剖析,实现如下:

frompyqueryimportPyQueryaspqdefget_products():"""    提取商品数据    """html = browser.page_source    doc = pq(html)    items = doc(mainsrp-itemlist .items .item).items()foriteminitems:        product = { image:item.find(.pic .img).attr(data-src),price:item.find(.price).text(),deal:item.find(.deal-cnt).text(),title:item.find(.title).text(),shop:item.find(.shop).text(),location:item.find(.location).text()        }        print(product)        save_to_mongo(product)

首先,调用page_source属性取患上页码的源代码,而后妄想了PyQuery工具,提取了商品列表,此时运用的CSS抉择器是mainsrp-itemlist .items .item,它会立室全部页面的每一个商品。它的立室服从是多个,以是这里咱们又对于它妨碍了一次遍历,用for循环将每一个服从分说妨碍剖析,每一次循环把它赋值为item变量,每一个item变量都是一个PyQuery工具,而后再调用它的find()措施,传入CSS抉择器,就能取患上单个商品的特定内容。

好比魔难一下商品源码

可能发现,它是一个img节点,搜罗id、class、data-src、alt以及src属性,这里之以是可能看到这样图片,是由于它的src属性被赋值为图片的URL。把它的src属性提掏进去,就能取患上商品的残缺图片了。不外咱们还留意data-src属性,它的图片内容也是图片的URL,审核后发现此URL是图片的残缺大图,而src是缩短后的小图,以是这里抓取data-src属性来作为商品的图片。

因此,咱们需要先运用find()措施找到图片的这个节点,而后再调用attr()措施取患上商品的data-src属性,这样就乐成提取了商品的链接。而后用同样的措施提取商品的价钱、成交量、称谓、店肆地址地等信息,接着将所有提取服从赋值为一个字典product,而后调用save_mongo()将其保存到MongoDB即可。

蒸工具时,蒸锅水不要放患上太多,艰深以蒸好后锅内剩半碗水为宜,这样做,可最大水平节约煤气。

6.保存到MongoDB

接下来,咱们将商品信息保存到MongoDB,代码如下:

importpymongoMONGO_URL =localhostMONGO_DB =taobaoMONGO_COLLECTION =productsclient = pymongo.MongoClient(MONGO_URL)db = client[MONGO_DB]defsave_to_mongo(result):"""    保存服从到MongoDB    """try:ifdb[MONGO_COLLECTION].insert(result):            print(存储到MongoDB乐成)exceptException:        print(存储到MongoDB挫折)

这里首先建树了一个MongoDB的衔接工具,而后指定了数据库,随后指定了Collection的称谓,接着调用insert()措施将数据库插入到MongoDB。此处的result的变量便是在get_products()措施里传来的product,搜罗单个商品的信息。

7.遍历每一页

适才咱们所界说的get_index()措施需要接管参数page,page代码页码。这里咱们实现页码遍历即可,代码如下:

MAX_PAGE =10defmain():"""    遍历    :return:    """foriinrange(1,MAX_PAGE+1):        index_page(i)        time.sleep(10)main()

最后调用main()措施即可运行。

8.颇为处置(绕过登录反爬机制)

当写到这里,假如运行挨次会发现,挨次在弹出浏览器窗口后,会泛起上岸页面,可是当你试验输入账户明码时,滑块的验证不断失效。而且页面还会不断刷新。如图

针对于这种情景,博主找到了两种处置妄想

措施一:更正ChromeDriver.exe

之以是泛起这种情景,是由于在淘宝的登录页面,有这样一个js,它会分说你是经由驱动掀开的浏览器仍是其余情景,假如是驱动掀开那末这个分说为真就会泛起这种情景,如图,为辨此外js

咱们在操作台运行一下这个剧本window.navigator.webdriver

可能看到,分说为真,剖析浏览器知道咱们运用的是驱动。

那该若何处置呢?

首先,运用nodepad++概况记事本掀开chrome,查找$cdc,找到这串代码后,将其用等长的字符串替换即可,好比把最后的l改为a。

而后把部份代码改为如下方式,将浏览器配置为开拓者方式:

option= webdriver.ChromeOptions()开拓者方式的开关,配置一下,掀开浏览器就不会识别为自动化测试工具了option.add_experimental_option(excludeSwitches, [enable-automation])driver = webdriver.Chrome(chrome_options=option)

假如这种措施不能失效,请看第二种措施

措施二:将用户信息的配置装备部署文件在代码中加载

首先,在Chrome中输入chrome://version/魔难信息。如图,这是咱们用户信息。

而后在代码中,加载浏览器配置装备部署

chrome_option = webdriver.ChromeOptions()p=rC:\Users\赵磊\AppData\Local\Google\Chrome\User Datachrome_option.add_experimental_option(excludeSwitches, [enable-automation])   以开拓者方式chrome_option.add_argument(--user-data-dir=+p)browser = webdriver.Chrome(options=chrome_option)wait = WebDriverWait(browser,10)

这样在爬取时就不会泛起登录页面了。

9.运行

此时运行代码,会发现弹出一个Chrome浏览器,而后会碰头淘宝页面,接着操作台输入如下

可能发现,这些商品信息的服从都是字典方式,它们倍存储到MongoDB概况,再看一下MongoDB中的服从

剖析信息保存到MongoDB中,爬取乐成。

运用Selenium自动秒抢淘宝商品

selenium有多种编程语言的客户端驱动,编写自动化剧本语法简洁,其中python的selenium库便颇为的受招待。

你可能运用selenium做web测试概况爬虫,自动抢票、自动下单也可能用selenium来做。

演示自动掀开淘宝网:

运用selenium抢购商品

  1. 导入selenium相关模块
导入库from seleniumimportwebdriverimportdatetimeimporttime
  1. 掀开chrome浏览器
记实光阴now= datetime.datetime.now().strftime(%Y-%m-%d %H:%M:%S.%f)掀开chromebrowser= webdriver.Chrome()
  1. 登录淘宝
登录deflogin():掀开淘宝首页,经由扫码登录browser.get("https://www.taobao.com/")    time.sleep(3)掀开登录界面find_login = browser.find_element_by_link_text("亲,请登录")iffind_login:        find_login.click()        print("请扫码登录")        time.sleep(10)        login()
  1. 抉择购物车列表
抉择购物车列表defpicking(method):是否全选购物车ifmethod ==0:whileTrue:try:ifbrowser.find_element_by_id("J_SelectAll1"):                    browser.find_element_by_id("J_SelectAll1").click()                    print(全选购物车乐成)breakexcept:                print(f"找不到置办按钮")else:        print(f"请手动勾选需要置办的商品")        time.sleep(1)
  1. 点击结算按钮
点击结算按钮defsettlement():whileTrue:try:ifbrowser.find_element_by_id(J_SelectedItemsCount).text >=1:                browser.find_element_by_link_text("结 算").click()                print(f"结算乐成,豫备提交定单")breakexcept:pass
  1. 点击提交定单按钮
点击提交定单按钮defsubmitting():whileTrue:try:ifbrowser.find_element_by_link_text(提交定单):                browser.find_element_by_link_text(提交定单).click()                print(f"抢购乐成,请尽快付款")breakexcept:            print(f"再次试验提交定单")
  1. 启动实施抢购
defrun(times):掀开购物车列表页面print(正在抢购!)    browser.get("https://cart.taobao.com/cart.htm")    time.sleep(3)whileTrue:        now = datetime.datetime.now().strftime(%Y-%m-%d %H:%M:%S.%f)比力光阴,光阴到的话就点击结算ifnow > times:全选购物车picking(0)点击结算按钮settlement()提交定单submitting()            print(now)break

期望本文对于你有所辅助~~假如对于软件测试、接口测试、自动化测试、功能测试、面试履历交流感兴趣可能私聊我或者关注公共号特斯汀软件测试。收费支出最新软件测试大厂面试质料以及Python自动化、接口、框架搭建钻研质料!技术大牛解惑答疑,同行一起交流。

饭后茴香:饭后嚼5~10粒茴香并咽下,可能防止口臭、清新口吻。茴香中的油还能辅助消化,去除了消化道臭味。

免责申明:本站所有信息均群集自互联网,并不代表本站意见,本站不同过错其简直正当性负责。若有信息侵略了您的权柄,请见告,本站将赶快处置。分割QQ:1640731186