准备:

1.安装Selenium:终端输入 pip install selenium

2.安装下载Chromedriver:解压后放在…\Google\Chrome\Application\;如果是Mac,可放入/usr/locl/bin,并将此目录放入环境变量

3.安装pyquery:终端输入 pip install pyquery

4.安装pymongo:终端输入 pip install pymongo

5.安装MongoDB的PyCharm插件:Preferences——Plugins——Mongo Plugin,安装完成后重启PyCharm可发现右侧有Mongo Explorer

6.安装MongoDB,windows:参考小歪老师知乎专栏MongoDB及可视化工具的安装;mac:参考 Mac OSX 平台安装 MongoDB安装

注:有时pip安装后,PyCharm中无法识别,首先确认编译器地址是否正确Preferences---Project interpreter;如果还不行,可在PyCharm下Preferences---Project interpreter重新添加包

基于:python3.6

遇到的坑:

1.定位搜索框元素的时候,查找对象路径,在点完搜索按钮后的页面得到(正确应该在淘宝首页获取),结果运行的时候,怎么都获取不到这个对象;所以:获取元素的时候,一定要在正确的页面查找该元素位置

2.翻页,10页以前的页码链接定位中规中矩,10页以后分奇偶,奇数用#mainsrp-pager > div > div > div > ul > li:nth-child(8) > a定位;偶数用#mainsrp-pager > div > div > div > ul > li:nth-child(9) > a定位,具体见源码

以下是源码,参考了很多DC 学院《Python爬虫(入门+进阶)》1-7,1-8课程内容,这算不算硬广:p

#!/usr/bin/python
# -*- coding:utf-8 -*- from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import By
from pyquery import PyQuery as pq
import re
import time
from pymongo import MongoClient as mc driver = webdriver.Chrome() #打开Chrome浏览器
wait = WebDriverWait(driver, 10) # 获取总页数
def search():
try:
driver.get('https://www.taobao.com')
# 获取搜索关键字输入框
input = wait.until(ec.presence_of_element_located((By.CSS_SELECTOR, '#q')))
# 获取搜索按钮
search = wait.until(ec.element_to_be_clickable((By.CSS_SELECTOR, '#J_TSearchForm > div.search-button > button')),'not find element')
# 输入关键字
input.send_keys(u'鞋子')
# 点搜索
search.click()
# 获取总页数
page_total = wait.until(ec.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > div.total')),'not find element')
# 调用方法获取首页产品概要
get_products()
return page_total.text
except Exception as ex:
print(ex) # 翻页
def page(pagenum):
try:
# 页数小于10,直接按页数定位
if(pagenum < 10):
css = '#mainsrp-pager > div > div > div > ul > li:nth-child({}) > a'.format(pagenum)
else:
# 页数大于10,如果是偶数,按nth-child(9)定位
if (pagenum%2==0):
css = '#mainsrp-pager > div > div > div > ul > li:nth-child(9) > a'
# 页数大于10,如果是奇数,按nth-child(8)定位
else:
css = '#mainsrp-pager > div > div > div > ul > li:nth-child(8) > a' # 获取页码链接
link = wait.until(ec.element_to_be_clickable((By.CSS_SELECTOR, css)), 'not find element')
# 点击页码链接
link.click()
time.sleep(1)
# 调用方法获取产品概要
get_products()
except Exception as ex:
print(ex) # 获取每页产品概要数据
def get_products():
# 所有产品项位置
pb = wait.until(ec.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-itemlist .items .item')),
' not find element')
html = driver.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(),
# 产品主题
'title': item.find('.title').text(),
# 产品商店
'shop': item.find('.shop').text(),
# 产品所在地
'location': item.find('.location').text(),
}
# print(product['title'])
# 入MongoDB库
client =mc()
db = client.taobao
set = db.xiezi
set.insert(product) if __name__ == '__main__':
# 获取总页数
page_total = search()
# 获取int 总页数
pagenum = int(re.compile('(\d+)').search(page_total).group(1))
# 轮询页码,获取产品概要;测试需要,只取15页
for i in range(3, 15):
print(str(i)+':')
page(i)
driver.quit()

Selenium爬取淘宝商品概要入mongodb的更多相关文章

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

    一.  Selenium和PhantomJS介绍 Selenium是一个用于Web应用程序测试的工具,Selenium直接运行在浏览器中,就像真正的用户在操作一样.由于这个性质,Selenium也是一 ...

  2. python3编写网络爬虫16-使用selenium 爬取淘宝商品信息

    一.使用selenium 模拟浏览器操作爬取淘宝商品信息 之前我们已经成功尝试分析Ajax来抓取相关数据,但是并不是所有页面都可以通过分析Ajax来完成抓取.比如,淘宝,它的整个页面数据确实也是通过A ...

  3. 使用Selenium爬取淘宝商品

    import pymongo from selenium import webdriver from selenium.common.exceptions import TimeoutExceptio ...

  4. Selenium+Chrome/phantomJS模拟浏览器爬取淘宝商品信息

    #使用selenium+Carome/phantomJS模拟浏览器爬取淘宝商品信息 # 思路: # 第一步:利用selenium驱动浏览器,搜索商品信息,得到商品列表 # 第二步:分析商品页数,驱动浏 ...

  5. <day003>登录+爬取淘宝商品信息+字典用json存储

    任务1:利用cookie可以免去登录的烦恼(验证码) ''' 只需要有登录后的cookie,就可以绕过验证码 登录后的cookie可以通过Selenium用第三方(微博)进行登录,不需要进行淘宝的滑动 ...

  6. Python 爬取淘宝商品数据挖掘分析实战

    Python 爬取淘宝商品数据挖掘分析实战 项目内容 本案例选择>> 商品类目:沙发: 数量:共100页  4400个商品: 筛选条件:天猫.销量从高到低.价格500元以上. 爬取淘宝商品 ...

  7. 爬取淘宝商品信息,放到html页面展示

    爬取淘宝商品信息 import pymysql import requests import re def getHTMLText(url): kv = {'cookie':'thw=cn; hng= ...

  8. 利用Python爬虫爬取淘宝商品做数据挖掘分析实战篇,超详细教程

    项目内容 本案例选择>> 商品类目:沙发: 数量:共100页  4400个商品: 筛选条件:天猫.销量从高到低.价格500元以上. 项目目的 1. 对商品标题进行文本分析 词云可视化 2. ...

  9. python爬虫学习(三):使用re库爬取"淘宝商品",并把结果写进txt文件

    第二个例子是使用requests库+re库爬取淘宝搜索商品页面的商品信息 (1)分析网页源码 打开淘宝,输入关键字“python”,然后搜索,显示如下搜索结果 从url连接中可以得到搜索商品的关键字是 ...

随机推荐

  1. 手把手教你进行R语言的安装及安装过程中相关问题解决方案

    这篇文章旨在为R语言的新手铺砖引路,行文相对基础,希望对在R语言安装上有问题的小伙伴提供帮助和指引.一.什么是 R 语言R 编程语言被广泛应用在统计科学和商业领域. 在各种编程语言排名中 R 语言的排 ...

  2. md5sum---文件校验和

    md5sum命令采用MD5报文摘要算法(128位)计算和检查文件的校验和.一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行. MD5算法常常被用来验证网络文件传输的完 ...

  3. dstat---统计磁盘,CPU,IO,等相关信息

    dstat命令是一个用来替换vmstat.iostat.netstat.nfsstat和ifstat这些命令的工具,是一个全能系统信息统计工具.与sysstat相比,dstat拥有一个彩色的界面,在手 ...

  4. [洛谷P3121] 审查(黄金) (AC自动机)

    题目描述 FJ把杂志上所有的文章摘抄了下来并把它变成了一个长度不超过10^5的字符串S.他有一个包含n个单词的列表,列表里的n个单词记为t_1...t_N.他希望从S中删除这些单词. FJ每次在S中找 ...

  5. Linux Virtual Server技术

    1 LVS简单介绍 Linux VirtualServer是一个高扩展和高可用性server,在一个真正server的集群中构建而成,包括Linux操作系统中的负载均衡. server的架构对于终端用 ...

  6. Linux查看当前正在执行的进程

    Linux查看当前正在执行的进程 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ ps PID TTY TIME CMD 2576 pts/0 00:00:00 ...

  7. Android怎样从外部跳进App

    解决问题有两个作用: 1.不用打开App直接进入某页面 2.实现App分享到外部,同一时候由外部进入App的闭环. 这个话题能够分双方面来讲.一方面是从微信进入App,还有一方面是从网页进入App. ...

  8. 优化时序之补全if else

    时序优化中重要的一项就是提高模块的最高工作频率,工作频率由关键路径决定,通常的提高工作频率的步骤是:利用时序分析工具找到关键路径,分析关键路径主要延迟是布线延迟还是逻辑延迟,然后轮番十八般武器,如果是 ...

  9. Linux常用的安全工具

    Linux常用的安全工具 "工欲善其事,必先利其器".作为一个合格的系统管理员,要应对可能发生的安全事件,掌握Linux下各种必须的安全工具是首要大事.本文主要介绍Linux上常用 ...

  10. Concurrent.Thread.js

    (function(){ if ( !this.Data || (typeof this.Data != 'object' && typeof this.Data != 'functi ...