Python 爬虫实例(11)—— 爬虫 苏宁易购
# coding:utf-8 import json
import redis
import time
import requests
session = requests.session()
import logging.handlers
import pickle
import sys
import re
import datetime
from bs4 import BeautifulSoup
from selenium import webdriver
import os import sys
reload(sys)
sys.setdefaultencoding('utf8') r =redis.Redis(host="123.56.74.190",port=6379,password="ZBHRwlb1608") import platform
sysStr = platform.system()
if sysStr =="Windows":
LOG_FILE_check = 'C:\\log\\wlb\\crawler\\cic.log'
else:
LOG_FILE_check = '/log/wlb/crawler/cic.log' handler = logging.handlers.RotatingFileHandler(LOG_FILE_check, maxBytes=128 * 1024 * 1024,backupCount=10) # 实例化handler 200M 最多十个文件
fmt = '\n' + '%(asctime)s - %(filename)s:%(lineno)s - %(message)s'
formatter = logging.Formatter(fmt) # 实例化formatter
handler.setFormatter(formatter) # 为handler添加formatter
logger = logging.getLogger('check') # 获取名为tst的logger
logger.addHandler(handler) # 为logger添加handler
logger.setLevel(logging.DEBUG) def spider():
chromedriver = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
os.environ["webdriver.chrome.driver"] = chromedriver
browser = webdriver.Chrome(chromedriver) # 设置浏览器需要打开的url
url = "https://www.suning.com/"
browser.get(url)
time.sleep(5) browser.find_element_by_id("searchKeywords").send_keys(u'手机')
time.sleep(2) for i in range(1,100):
browser.find_element_by_name("index1_none_search_ss1").click()
browser.find_element_by_id("nextPage").click()
result = browser.page_source
soup = BeautifulSoup(result,'html.parser')
result_ul = soup.find_all('div',attrs={"id":"filter-results"})[0] result_list = result_ul.find_all('div',attrs={"class":"li-bg"})
print len(result_list)
print result_list[1]
# for item in result_list:
# print item
# print "==" * 30
#
# time.sleep(500) for item in result_list: item = str(item).replace('\n','').replace('\r','').replace('\t','')
print "==" * 30 print item
try:
sold_price = re.findall('pricefn="priceCenterShow"><i>¥</i>(.*?)<i>.*?</i></span>',item)[0]
except:
sold_price = re.findall('<i>¥</i>(.*?)<i>.*?</i></span>',item)[0]
try:
item_name = re.findall('<i class=".*?" style=".*?"></i>(.*?)</b></a>',item)[0]
except:
item_name = re.findall('target="_blank" title="(.*?)"><i class=',item)[0] try:
item_url = re.findall('class=".*?" href="(.*?)" name',item)[0]
except:
item_url = re.findall('<a class=".*?" href="(.*?)" id=', item)[0]
try:
item_desc = re.findall('<span><i></i><em>(.*?)</em><b></b></span>',item)[0]
except:
item_desc = re.findall('<em>(.*?)</em>', item)[0] print item_url
print item_name
print sold_price
print item_desc time.sleep(500) spider()
Python 爬虫实例(11)—— 爬虫 苏宁易购的更多相关文章
- 分布式爬虫系统设计、实现与实战:爬取京东、苏宁易购全网手机商品数据+MySQL、HBase存储
http://blog.51cto.com/xpleaf/2093952 1 概述 在不用爬虫框架的情况,经过多方学习,尝试实现了一个分布式爬虫系统,并且可以将数据保存到不同地方,类似MySQL.HB ...
- jQuery仿苏宁易购导航
最近看了些网上的各类导航网站源码,自己学习制作了一个仿苏宁易购的导航栏 jQuery部分代码 $(function(){ $(".CategoryTree>ul>li" ...
- Axure RP Pro 7.0苏宁易购式标签切换效果教程
转:http://jingyan.baidu.com/article/7082dc1c4f0a11e40a89bdac.html 页面标签切换效果,几乎是所有大网站(尤其是电商类网站)标配的交互方式: ...
- 华为HiAI 助力苏宁易购,让你尽享完美视觉购物体验!
还在感慨商品照片与实物存在差距,又要退货? 还在抱怨被忽视的图片小细节,影响了生活品质? 想要“买买买”, 又担心海量的商品图片耗光你的流量? 就在近期 搭载HiAI能力的苏宁易购新版上线, 让你畅快 ...
- 苏宁易购Android架构演进史
互联网后端架构 https://mp.weixin.qq.com/s/5lDXjMh6ghQNi4E7qQIEEg 互联网后端架构 10月9日 摘要 移动青铜时代(2012-2014) 时代特点: 移 ...
- 苏宁易购微信端 全页通过background单图
w单图,绕开了显示的兼容性. http://res.m.suning.com/project/JoinGo/intro.html http://res.m.suning.com/project/Joi ...
- 苏宁易购微信端 wx ios android other 通过js来控制样式
<!DOCTYPE HTML><html><head><meta charset="UTF-8"><meta name=&qu ...
- Python 爬虫实例
下面是我写的一个简单爬虫实例 1.定义函数读取html网页的源代码 2.从源代码通过正则表达式挑选出自己需要获取的内容 3.序列中的htm依次写到d盘 #!/usr/bin/python import ...
- python Cmd实例之网络爬虫应用
python Cmd实例之网络爬虫应用 标签(空格分隔): python Cmd 爬虫 废话少说,直接上代码 # encoding=utf-8 import os import multiproces ...
随机推荐
- Spring-boot logback日志处理
1:在resources目录下面创建logback.xml配置文件 <?xml version="1.0"?> <configuration> <!- ...
- Linux多线程同步之相互排斥量和条件变量
1. 什么是相互排斥量 相互排斥量从本质上说是一把锁,在訪问共享资源前对相互排斥量进行加锁,在訪问完毕后释放相互排斥量上的锁. 对相互排斥量进行加锁以后,不论什么其它试图再次对相互排斥量加锁的线程将会 ...
- cocos2d-js 自定义事件监听派发
熟悉js的dom事件或者flash事件的,基本都能立马明白cc.eventManager的用法. cc.eventManager有两种注册监听器的方式,一种是原生事件,例如 cc.eventManag ...
- spring 配置bean的方法及依赖注入发方式
Bean 的配置方式:通过全类名(反射).通过工厂方法(静态工厂方法 & 实例工厂方法).FactoryBean 这里依据全类名配置bean <bean id="helloWo ...
- DLib库Base64编解码示例
代码 #include <iostream> #include <fstream> #include <sstream> #include <string&g ...
- Linux下wc命令统计文件行数/词数/字符数/最长行字符数
wc命令帮助 $ wc --help Usage: wc [OPTION]... [FILE]... or: wc [OPTION]... --files0-from=F Print newline, ...
- android事务队列处理的实现
代码地址如下:http://www.demodashi.com/demo/14748.html 前言 在android开发中,我们经常会遇到一种情况,随时接收并处理服务端发过来的消息,当服务端发过来的 ...
- Android的Button按钮,ACTION_UP事件不触发解决方案
在android 编程时,有时候要实现当Button一直按下的时候,执行一些逻辑代码,当按钮弹起的时候,终止这些逻辑代码的执行. 比如在 设置页面的滑动开关时,如果不监听ACT ...
- ubuntu下安装万能五笔
之前一直习惯了万能五笔输入法,使用Ubuntu12.04安装wnwb 在网络上搜索了一下并没有找到可 以在ibus下直接使用万能五笔的方法,于是想自己动手解决这个问题, 参考别人之前做的万能五笔For ...
- iOS控制器生命周期
//view加载完毕就会自动调用 - (void)viewDidLoad; //view即将显示到window上 - (void)viewWillAppear:(BOOL)animated ; //v ...