使用selenium +PhantomJS()/Chrome爬取 淘宝页面,存储到mongdb中

使用config进行一些设置

MONGO_URL = 'localhost'
MONGO_DB = 'taobao'
MONGO_TABLE = 'product'

# 将图片设定为不下载
SERVICE_ARGS = ['--load-images=false', '--disk-cache=true']

# 搜索名称
KEYWORD = '情人节礼物'

在编写代码的时候要注意,可以先使用Chrome 运行,当将代码调试完毕后,在改为PhantomJS

代码如下

import re
from 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
from pyquery import PyQuery as pq
from config import *
import pymongo

client = pymongo.MongoClient(MONGO_URL)
db = client[MONGO_DB]

browser = webdriver.PhantomJS()
wait = WebDriverWait(browser, 10)

browser.set_window_size(1400, 900)

def search():
    print('正在搜索')
    try:
        browser.get('https://www.taobao.com')
        input = wait.until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '#q'))
        )
        submit = wait.until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, '#J_TSearchForm > div.search-button > button')))
        input.send_keys(KEYWORD)
        submit.click()
        total = wait.until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > div.total')))
        get_products()
        return total.text
    except TimeoutException:
        return search()

def next_page(page_number):
    print('正在翻页', page_number)
    try:
        input = wait.until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > div.form > input'))
        )
        submit = wait.until(EC.element_to_be_clickable(
            (By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > div.form > span.btn.J_Submit')))
        input.clear()
        input.send_keys(page_number)
        submit.click()
        wait.until(EC.text_to_be_present_in_element(
            (By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > ul > li.item.active > span'), str(page_number)))
        get_products()
    except TimeoutException:
        next_page(page_number)

def get_products():
    wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-itemlist .items .item')))
    html = browser.page_source
    doc = pq(html)
    items = doc('#mainsrp-itemlist .items .item').items()
    for item in items:
        product = {
            'image': item.find('.pic .img').attr('src'),
            'price': item.find('.price').text(),
            'deal': item.find('.deal-cnt').text()[:-3],
            'title': item.find('.title').text(),
            'shop': item.find('.shop').text(),
            'location': item.find('.location').text()
        }
        print(product)
        save_to_mongo(product)

def save_to_mongo(result):
    try:
        if db[MONGO_TABLE].insert(result):
            print('存储到MONGODB成功', result)
    except Exception:
        print('存储到MONGODB失败', result)

def main():
    try:
        total = search()
        total = int(re.compile('(\d+)').search(total).group(1))
        for i in range(2, total + 1):
            next_page(i)
    except Exception:
        print('出错啦')
    finally:
        browser.close()

if __name__ == '__main__':
    main()

使用selenium爬取淘宝店铺信息相关推荐

  1. python爬虫——用selenium爬取淘宝商品信息

    python爬虫--用selenium爬取淘宝商品信息 1.附上效果图 2.淘宝网址https://www.taobao.com/ 3.先写好头部 browser = webdriver.Chrome ...

  2. 利用Selenium爬取淘宝商品信息

    文章来源:公众号-智能化IT系统. 一.  Selenium和PhantomJS介绍 Selenium是一个用于Web应用程序测试的工具,Selenium直接运行在浏览器中,就像真正的用户在操作一样. ...

  3. 爬虫学习笔记——Selenium爬取淘宝商品信息并保存

    在使用selenium来模拟浏览器操作,抓取淘宝商品信息前,先完成一些准备工作. 准备工作:需要安装selenium,pyquery,以及Chrome浏览器并配置ChromeDriver. 安装sel ...

  4. selenium爬取淘宝店铺数据

    这里爬取的是某宝店铺的商品,获取的是框框里面的信息(百丽的信息) 价格 累计评价 销量 活动 名称 连接 运行方式: 1.会自动弹出一个浏览器,打开淘宝 2.然后会弹出一个登入界面(手机扫描登入),输 ...

  5. 使用python selenium爬取淘宝商品信息 自动登录淘宝和爬取某一宝贝的主图,属性图和详情图等等

    selenium作为一个自动化测试工具非常好用,谁用谁知道啊. 先说如何登录淘宝,淘宝现在直接用会员名和密码登录会有滑块验证,找了网上说的几种方法和自己尝试了一番效果还是不太理想,实测过程中,即使滑块 ...

  6. python+selenium爬取淘宝商品信息+淘宝自动登录——爬虫实战

    1.前言 继续学习爬虫内容,这回是以selenium模拟操作进行抓取,其中有几个需要登陆的注意事项. 2.自动登陆+查找页面 由于现在淘宝的反爬机制,需要登陆才好下一步操作.在搜索输入后页面会调入登陆 ...

  7. python使用Selenium爬取淘宝商品信息

           由于淘宝对自动化工具进行了识别,直接进入登录页面滑动二维码一直会报错,所以采取了曲线救国的方式,通过用微博账号来登录淘宝.刚自学<Python3网络爬虫开发实战>,和里面的代 ...

  8. Python爬虫+selenium——爬取淘宝商品信息和数据分析

    浏览器驱动 点击下载chromedrive .将下载的浏览器驱动文件chromedriver丢到Chrome浏览器目录中的Application文件夹下,配置Chrome浏览器位置到PATH环境. 需 ...

  9. 爬取淘宝商品信息selenium+pyquery+mongodb

    ''' 爬取淘宝商品信息,通过selenium获得渲染后的源码,pyquery解析,mongodb存储 '''from selenium import webdriver from selenium. ...

最新文章

  1. springMvc的执行流程(源码分析)
  2. 【Vue】24.遮罩层阻止默认滚动事件
  3. php fast cgi nginx,通过fast-cgi连接php-fpm和nginx之间的连接是持久的(保持活动)连接吗?...
  4. ahci模式下无法启动Linux,电脑AHCI模式无法开启是怎么回事?
  5. Android4.0的Alertdialog对话框,设置点击其他位置不消失
  6. m_Orchestrate learning system---三十一、模板和需求的关系
  7. java 异常处理 Throwable Error 和Exception
  8. python车牌识别_Python-车牌识别
  9. html模拟鼠标点击图标,易语言模拟鼠标点击实现方法
  10. CVPR引起巨大争议的新技术Face2Face:当科技先进到让人害怕
  11. 细胞分裂(洛谷 P1069)
  12. 用for循环打印输出数据三角形图形
  13. 乔治城大学计算机专业,美国乔治城大学计算机
  14. 最近碰到的上架苹果4.3问题分析
  15. 明日之后到底要不要加营地?不加营地能玩吗?
  16. 养蚕日记软件测试,养蚕的过程日记300字
  17. 访客一体机六大鸡肋功能
  18. java hssffont_Java HSSFFont.setColor方法代碼示例
  19. Unity碰撞和碰撞检测
  20. centos7升级Apache2.4.6到2.4.54

热门文章

  1. 2022-2028全球观赏鹦鹉饲料行业调研及趋势分析报告
  2. 全球地震数据下载方法
  3. Linux运维企业架构项目实战系列
  4. 关于null和undefined小结
  5. Guava ListenableFuture实现异步非阻塞调用
  6. 达梦数据库导出为SQL文件
  7. 元宇宙的构建可更多地依靠人们自主的意识和观念的创造
  8. 仿造 google 日历
  9. 门禁服务器故障怎样修复,门禁系统出故障的几种解决方法
  10. 微软用 ChatGPT 改写 Bing、Edge,市值一夜飙涨 5450 亿元!