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 KEYWORD = '小米手机'
MAX_PAGE = 3 # 浏览器驱动
browser = webdriver.Chrome()
wait = WebDriverWait(browser,10) def get_products():
# 获取网页源代码
html = browser.page_source
# 解析
content = pq(browser.page_source)
# 得到所有选择的内容
items = content('#mainsrp-itemlist .m-itemlist .grid.g-clearfix .item').items()
for item in items:
product = {
'image':item.find('.pic .img').attr('data-src'),
'price':item.find('.price').text().strip(),
'deal':item.find('.deal-cnt').text(),
'title':item.find('.title').text(),
'shop':item.find('.shop').text(),
'location':item.find('.location').text()
} print('--------{}----------\n'.format(product)) def index_page(page):
'''
抓取索引页
:param page:
:return:
'''
print(10*'-','正在抓取第{}页'.format(page),10*'-')
try:
url = 'https://s.taobao.com/search?q={}'.format(KEYWORD)
print(url)
browser.get(url)
# 如果抓取的不是第一页,进行跳页操作
if page > 1:
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)
submit.click()
# 等待页面加载完成(当前高亮页码是page)
wait.until(EC.text_to_be_present_in_element((
By.CSS_SELECTOR,'#mainsrp-pager > div > div > div > ul > li.item.active > span'
),str(page)))
# 等待所有商品信息加载完成
wait.until(EC.presence_of_element_located((
By.CSS_SELECTOR,'#mainsrp-itemlist .m-itemlist .grid.g-clearfix .item')
))
get_products()
except TimeoutException:
index_page() def main():
# 遍历每一页
for page in range(1,MAX_PAGE+1):
index_page(page)

selenium+pyquery爬取淘宝商品信息的更多相关文章

  1. selenium+phantomjs+pyquery 爬取淘宝商品信息

    from selenium import webdriver from selenium.common.exceptions import TimeoutException from selenium ...

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

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

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

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

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

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

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

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

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

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

  7. selenium+pyquery爬取淘宝美食100页(无头静默模式)

    import re from selenium import webdriver from selenium.webdriver.common.by import By from selenium.w ...

  8. Python 爬取淘宝商品信息和相应价格

    !只用于学习用途! plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"',html) :获得商品价格和view_pri ...

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

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

随机推荐

  1. mysqlpump原理及实战

    MySQL5.7之后多了一个备份工具:mysqlpump.它是mysqldump的一个衍生,mysqldump就不多说明了,现在看看mysqlpump到底有了哪些提升,可以查看官方文档,这里针对如何使 ...

  2. Foo Fighters CodeForces - 1148F

    大意: 给定$n$个二元组$(val_i,mask_i)$. 保证$\sum val_i$不为$0$. 要求选择一个数$s$, 对于每个二元组$(val_i,mask_i)$, 若$s\& m ...

  3. JAVA学习篇--静态代理VS动态代理

    本篇博客的由来,之前我们学习大话设计,就了解了代理模式,但为什么还要说呢? 原因: 1,通过DRP这个项目,了解到了动态代理,认识到我们之前一直使用的都是静态代理,那么动态代理又有什么好处呢?它们二者 ...

  4. Web API 自动生成接口文档

    1.添加NuGet程序包 Microsoft ASP.NET Web API 2.2 Help Page      (这是微软官方的) A Simple Test Client for ASP.NET ...

  5. JAVA中ArrayList重写比较方法

    ArrayList的sort方法重写: 当ArrayList中存放的为含有多个成员变量的数据类型时,在进行sort排序时要重写比较方法,一般都写在这个数据类型类的内部如: package 算法竞赛入门 ...

  6. Docker搭建Gitlab代码管理平台

    一.Gitlab的安装 宿主机环境: CentOS 7 docker docker-compose 1.查找镜像 docker search gitlab 2.拉取镜像 docker pull git ...

  7. Redis汇总

    开源项目 https://www.cnblogs.com/yswenli/p/9460527.html

  8. 如何自动运行loadrunner脚本

    问题背景 在凌晨之后,自然流量比较低,无需人值守的情况自动运行loadruner脚本. 实现思路 windows定时任务+BAT脚本 BAT脚本: SET M_ROOT=C:\Program File ...

  9. Airflow安装错误:sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError)

    1 完整的异常信息: raise errorclass, errorvalue sqlalchemy.exc.OperationalError: (_mysql_exceptions.Operatio ...

  10. (一)Android jni打印到logcat

    #include <stdio.h> #include <android/log.h> int main(void) { int a = 0x10,b = 0x20; __an ...