正品美食网站源码分享,美食网站源代码

各位老铁们好,相信很多人对正品美食网站源码分享都不是特别的了解,因此呢,今天就来为大家分享下关于正品美食网站源码分享以及美食网站源代码的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

淘宝页面比较复杂,含有各种请求参数和加密参数,如果直接请求或者分析Ajax将会非常繁琐。Selenium是一个自动化测试工具,可以驱动浏览器去完成各种工作,比如模拟点击、输入和下拉等多种功能,这样我们只需关心操作,不需要关心后台发生了怎么样的请求下面对具体操作步骤进行详述

实现流程

1.搜索关键字:利用Selenium驱动浏览器搜索关键字,得到查询后的商品列表

2.分析页码并翻页:得到商品页码数,模拟翻页,得到后续页面的商品列表

3.分析提取商品内容:利用PyQuery分析源码,解析得到商品列表

4.存储至MongoDB:将商品列表信息存储到数据库MongoDB

具体实现

1.首先需要声明一个browser用来操作,我的是chrome。这里的wait是在后面的判断元素是否出现时使用,第二个参数为等待最长时间,超过该值则抛出异常

十秒内寻找元素失败,将报出TimeoutException异常\nwait=WebDriverWait(browser,10)\n

2.声明好之后就需要进行打开网页、进行搜索的操作

defsearch():\n”””\n作用:通过关键字搜索得到搜索内容第一页产品信息,并返回搜索内容共计页码\n”””\nprint(‘正在搜索’)\ntry:\nbrowser.get(‘https://www.taobao.com’)\nprint(browser.page_source)\n\nq”))\n)获取button提交对象\nsubmit=wait.until(\nEC.element_to_be_clickable(\n(By.CSS_SELECTOR,”KEYWORD是config.py文件中定义的搜索关键字,可修改\ninput.send_keys(KEYWORD)\n通过CSS_SELECTOR选择器获取total页码\ntotal_page=wait.until(\nEC.presence_of_element_located(\n(By.CSS_SELECTOR,”解析页面内容,并将数据保存至MongoDB中\nget_products()\nreturntotal_page.text\nexceptTimeoutException:\n获取input输入框对象\ninput=wait.until(\nEC.presence_of_element_located(\n(By.CSS_SELECTOR,”获取button提交对象\nsubmit=wait.until(\nEC.element_to_be_clickable(\n(By.CSS_SELECTOR,”div>div>div>div.form>span.btn.J_Submit”)\n)\n)\n向input框中输入页码\ninput.send_keys(page_number)\n验证输入框内的页码是否为当前高亮页码,如果是,则继续执行\nmainsrp-pager>div>div>div>ul>li.item.active>span’),str(page_number)\n)\n)\n\n超时异常,则继续解析该页\nnext_page(page_number)\n

4.写完搜索操作和翻页操作后,我们需要完成对每个页面的商品信息获取功能

defget_products():\n”””\n作用:通过页面源代码,将产品信息保存至MongoDB中\n”””\nmainsrp-itemlist.items.item”))\n)\n通过pyquery找到产品对象\ndoc=pq(html)\nitems=doc(‘遍历每个产品对象,组建数据内容\nforiteminitems:\nproduct={\n’image’:item.find(‘.pic.img’).attr(‘src’),\n’price’:item.find(‘.price’).text(),\n’deal’:item.find(‘.deal-cnt’).text()[:-3],\n’title’:item.find(‘.title’).text(),\n’shop’:item.find(‘.shop’).text(),\n’location’:item.find(‘.location’).text()\n}\n将组建好的每个产品信息保存至MongoDB\nsave_to_mongo(product)\n

5.获取信息之后则需要对信息进行存储,将数据库关键参数定义在config.py文件中

coding=utf-8\n数据库的名称\nMONGO_DB=’taobao’\n创建一个MongoDB对象\nclient=pymongo.MongoClient(MONGO_URL)\n通过正则将search返回的total页码内容解析成数字形式\npattern=re.compile(‘(\\d+)’)\ntotal_page=int(pattern.search(total_page).group(1))\n遍历页码,传入next_page函数中,做整站爬取\nforiinrange(2,total_page+1):\nnext_page(i)\n\nexceptException:\nprint(‘有错误产生…’)\n\nfinally:\nbrowser.close()\n

8.代码完成到这里已经可以结束了,但是使用Selenium模拟会发现每次运行程序都会打开一个浏览器,然后自动操作,可以最直接地观察到代码的运行,但是假如不想弹出浏览器的话,可以使用PhantomJS来实现一个无界面的webkit浏览器。虽然没有界面,但dom渲染、js运行、网络访问、canvas/svg绘制等功能都很完备,在页面抓取、页面输出、自动化测试等方面有广泛的应用。下载PhantomJS地址:http://phantomjs.org/download.html,下载完成后解压缩,将PhantomJS添加到环境变量中即可

在config.py文件中加上

无界面浏览器,将browser改为\nbrowser=webdriver.PhantomJS(service_args=SERVICE_ARGS)\n验证text参数是否与选择器选择的元素文本内容一致\ntext_to_be_present_in_element(locator,text_)\n

3.完整源码地址:https://github.com/XiaoFei-97/TbMeishi_Spider\\

关于正品美食网站源码分享,美食网站源代码的介绍到此结束,希望对大家有所帮助。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平