作者:李忠林

Github: https://github.com/Leezhonglin

Gitblog: https://leezhonglin.github.io/

本文仅用于学习.

使用自动化测试库,来模拟浏览器获取淘宝搜索页面的相关信息.首先我们需要安装selenium | BeautifulSoup4 | pymongo 库.安装方法.

pip install selenium
​
pip install beautifulsoup4
​
pip install pymongo

安装好之后我们需要检查一下是否的都安装成功.检查方法在虚拟环境中输入

(venv) deMacBook-Pro:spider00 lizhonglin$ pip freeze
​
selenium==3.13.0
beautifulsoup4==4.6.0
pymongo==3.7.0

能看见这几个东西就表明我们的库已经成功安装了.

接下来我们就可以开始我们的代码了.首先我们要理清楚解决问题的思路.有了思路了才能开始写我们的代码. 分析问题— — >获取解决问题的方法— — > 解决问题.就有了我们下面的代码.

import time
from selenium import webdriver
from bs4 import BeautifulSoup
from pymongo import MongoClient
​
​
def save_data_mongodb(data):"""
    保存数据到mongodb
    :param data: 传入需要保存的数据
    :return: 无
    """# 链接数据库conn = MongoClient('mongodb://127.0.0.1:27017')# 切换到taobao的数据库db = conn.taobao# 插入数据db.goods_info.insert(data)
​
​
def parse_taobao_goods_info_html(html):"""
    解析页面信息
    :param html: 需要解析的页面
    """soup = BeautifulSoup(html, 'lxml')div_list = soup.find_all('div', 'J_MouserOnverReq')for div in div_list:# 获取图片和名称imgs = div.find('img', 'J_ItemPic')image_link = 'https:' + imgs.attrs.get('data-src')name = imgs.attrs.get('alt')# print('商品图片链接:'+image_link)# print('商品名称:'+ name)# 获取商品的价格price = div.find('div', 'g_price-highlight').find('strong').text# print('价格:'+price)# 获取商品的销量sales = div.find('div', 'deal-cnt').text.split('人')[0]# print('销量:'+ sales)# 获取商品地区信息location = div.find('div', 'location').text# print('地区:'+ location)# 获取商家信息try:business_info = div.find('a', 'shopname').find_all('span')[-1].textexcept:business_info = div.find('a', 'shopname').text
​# print('商家信息:' + business_info)result = {'name': name,'image_link': image_link,'price': price,'sales': sales,'location': location,'business_info': business_info}# 插入数据save_data_mongodb(result)
​
​
def get_taobao_html(url, keyword):"""
    爬取原始页面
    :param url: 爬取页面的url
    :param keyword:  需要爬取的关键字
    :return: 爬取完的所有数据
    """browser = webdriver.Chrome()browser.get(url)time.sleep(3)# 模拟在输入框内输入数据browser.find_element_by_id('q').send_keys(keyword)time.sleep(4)# 模拟点击搜索browser.find_element_by_class_name('btn-search').click()time.sleep(2)
​# 获取到有多少页的搜索结果total_page = browser.find_element_by_xpath('//*[@id="mainsrp-pager"]/div/div/div/div[1]').text.split()[1]# 获取页面资源print('正在获取第一页数据')html_source_one = browser.page_sourcetime.sleep(8)# print(html_source_one)print('正在解析第一页数据')parse_taobao_goods_info_html(html_source_one)time.sleep(8)print('第一页数据插入完成')
​# for page in range(int(total_page)):for page in range(4):# 判断右下角页面输入框的值,来确定当前页current_page = int(browser.find_element_by_xpath('//*[@id="mainsrp-pager"]/div/div/div/div[2]/input').get_attribute('value'))if current_page != page:bottom = "window.scrollTo(0, document.body.scrollHeight)"browser.execute_script(bottom)time.sleep(1)# 修改要爬取的页面值browser.find_element_by_xpath('//*[@id="mainsrp-pager"]/div/div/div/div[2]/input').clear()browser.find_element_by_xpath('//*[@id="mainsrp-pager"]/div/div/div/div[2]/input').send_keys(current_page)# 提交要爬取的页面browser.find_element_by_xpath('//*[@id="mainsrp-pager"]/div/div/div/div[2]/span[3]').click()time.sleep(3)print('++++++' * 10)print('正在获取第%d页数...' % current_page)# 获取当前页面的源码html_source = browser.page_sourcetime.sleep(8)# 解析获取的页面print('正在解析第%d页数...' % current_page)parse_taobao_goods_info_html(html_source)time.sleep(8)print('第%d页数据插入完成......' % current_page)browser.close()
​
​
if __name__ == '__main__':keyword = input('请输入要搜索的关键字:')url = 'https://www.taobao.com/'get_taobao_html(url, keyword)
​

使用selenium模拟浏览器,获取淘宝搜索页面商品名称销量等信息相关推荐

  1. 用selenium模拟浏览器登录淘宝识别滑动验证码

    用selenium模拟浏览器登录淘宝,使用账号密码的方式登录淘宝,但是在登录的时候遇到需要滑动验证,使用selenium模拟点击滑块,滑动验证码完成登录. 本文的代码现测可用.做个记录,方便以后查看. ...

  2. python + selenium多进程爬取淘宝搜索页数据

    python + selenium多进程爬取淘宝搜索页数据 1. 功能描述 按照给定的关键词,在淘宝搜索对应的产品,然后爬取搜索结果中产品的信息,包括:标题,价格,销量,产地等信息,存入mongodb ...

  3. 【python】实验2项目2:使用爬虫Selenium模拟浏览器获取爬取QQ音乐中你喜欢的某位歌手(陈奕迅)

    请使用爬虫Selenium模拟浏览器获取爬取QQ音乐中你喜欢的某位歌手(可以是任意歌手)最受欢迎的前5首歌曲的歌词.流派.歌曲发行时间.评论条数.评论时间.评论点赞次数.评论内容具体(每一首歌的评论& ...

  4. 基于selenium模拟浏览器爬虫JS-frame,搜索+爬取详情页+翻页

    基于selenium模拟浏览器爬虫JS-frame网站 课设中需要爬一个很神奇的网站Web Gallery,一开始看结构以为是很简单的那种,开始爬的时候才发现它的结构之奇葩--所有东西都集成在一个ht ...

  5. selenium + Chrome 模拟浏览器爬淘宝信息

    环境: ubuntu16.04 python3.5.2 版本 67.0.3396.87(正式版本) (64 位) chromedriver 2.40 安装所需工具: 1 selenium三方库安装 p ...

  6. 小白也能轻松上手selenium,无忧获取淘宝商品信息,献给手把手教的会的你

    目录 前言 准备工作 系统要求 集成开发环境下载 配置开发环境 分析网站 首先进入的是淘宝首页 接着显示的是登录页面 登录后进入搜索结果页 编写程序 先做基本的配置 数据文件 浏览器配置 特殊字符去除 ...

  7. python 淘宝搜索_Python使用Selenium+BeautifulSoup爬取淘宝搜索页

    使用Selenium驱动chrome页面,获得淘宝信息并用BeautifulSoup分析得到结果. 使用Selenium时注意页面的加载判断,以及加载超时的异常处理. import json impo ...

  8. Selenium模拟登录系列 | 淘宝滑块验证码破解!不难嘛!

    导 语 好久没更新了,上来冒个泡吧.各位小伙伴还记得前段时间号主挖过的一个坑嘛(虽然我曾经挖过无数个坑T_T): Selenium模拟登录系列 | B站滑块验证码破解 今天随手更新了一下Seleniu ...

  9. Python模拟浏览器登录淘宝

    因为前几天写了个Python登录教务网的爬虫,这几天又突然想到用Python登录淘宝试试,于是二话不说,代码走起.本来以为很简单,但一写我就傻眼了,登淘宝的涉及到很多东西,验证码,加密算法,用http ...

最新文章

  1. 上周热点回顾(12.8-12.14)
  2. .NET平台相关概念(简单了解)
  3. Linux下查看MySQL的安装路径
  4. Gartner市场分析报告显示2010年全球安全软件市场增长12%
  5. The whole Fiori application is wrapped in a big shell xml view
  6. [Qt] 利用QtWebKit完成JavaScript访问C++对象
  7. python 去除nan inf_Python实现半自动评分卡建模(附代码)
  8. 困计算机无法启动adb,win7系统无法启动adb.exe工具包的解决方法
  9. Android HAL 开发 (2)
  10. 判断当前用户有无Administrator的权限
  11. [转] 面向对象编程 - 类和实例
  12. Xcode中打印显示Unicode的解决办法
  13. 免费的瓦片图集资源TiledMap
  14. 史上最全!20/21届春招/秋招 实习/校招 JAVA面试全攻略!复习回顾这一篇就够了!
  15. BCH智能合约方案正式推出,我们的征途是星辰大海!
  16. Java 开发中常用的 4 种加密方法。MD5加密工具类测试 base64加密工具类测试 SHA加密工具类测试 BCrypt加密工具类测试
  17. mysql backtrace_是什么导致Linux 64位上的backtrace()崩溃(SIGSEGV)
  18. unity中单位是米还是厘米_cm在单位里是厘米还是毫米
  19. 马尔科夫不等式和坎泰利不等式的证明
  20. 游客丽江住店被蚊子咬醒 前台:养的宠物 死1只赔100

热门文章

  1. VB工程处---百例66--网站页面
  2. oracle数据库_安装
  3. DSS:(Decision-making Support System)决策支持系统
  4. React学习笔记_shoping_cart
  5. 内存(Memory)
  6. 百度云尹世明:用ABC让复杂的营销更简单
  7. NLPIR平台的文本聚类模块完美契合行业需求
  8. 霍金将在GMIC上做视频演讲,探讨科学的未来
  9. 【地铁测量-车站】02 车站模板抄平思路
  10. 大数据聚类算法性能比较及实验报告