selenium + Chrome 模拟浏览器爬淘宝信息
环境:
ubuntu16.04
python3.5.2
版本 67.0.3396.87(正式版本) (64 位)
chromedriver 2.40
安装所需工具:
- 1 selenium三方库安装
pip install selenium # 安装selenium库
- 2 chromedriver安装
chromedriver官网地址: http://chromedriver.storage.googleapis.com/index.html
选择合适的版本安装,解压,把解压的文件放入/usr/bin/目录下即可:
mv chromedriver /usr/bin/
- python下测试chromedriver:
from selenium import webdriver # 引入驱动对象
driver = webdriver.Chrome() # 生成谷歌浏览器对象
driver.get('http://www.baidu.com') #访问百度
----浏览器会自动打开一个新的页面并访问百度,成功说明安装配置成功.----
分析淘宝页面并执行selenium
python selenium官网地址: http://selenium-python.readthedocs.io/
#coding:utf-8
import re
from bs4 import BeautifulSoup
from selenium.common.exceptions import TimeoutException
from selenium import webdriver
#这几个都是从selenium官网套用的
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 谷歌浏览器驱动对象
browser = webdriver.Chrome()
# selenium和PhantomJS分手了,现在可以用无头浏览器FireFox或者Chrome代替
# browser = webdriver.PhantomJS()
wait = WebDriverWait(browser, 10)# 打开淘宝页面并输入"美食"
def search():try:browser.get('https://www.taobao.com/')# 等待10秒直到找到輸入框 通過css选择器语法来实现input_button = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#q")))# 等待10秒直到找到搜索按钮 通過css选择器语法来实现submmit = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#J_TSearchForm > div.search-button > button")))# 用send_keys()方法輸入"美食"input_button.send_keys('美食')# 用click()方法点击搜索按钮submmit.click()# 关键词搜索出来在淘宝中的页数total = wait.until( EC.presence_of_element_located((By.CSS_SELECTOR, "#mainsrp-pager > div > div > div > div.total")))return total.text# timeout报错 递归调用自己except TimeoutException:return search()# 翻页函数
def next_page(page_number):try:# 等待10秒直到找到輸入框 通過css选择器语法来实现# 淘宝返回页下面的跳转的输入框: 第 [1] 页input_button = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#mainsrp-pager > div > div > div > div.form > input")))# 等待10秒直到找到搜索按钮 通過css选择器语法来实现# 淘宝返回页下面的跳转按钮:第 [1] 页 确认submmit = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#mainsrp-pager > div > div > div > div.form > span.btn.J_Submit")))# 清楚内容input_button.clear()# 输入跳转页码input_button.send_keys(page_number)# 点击跳转submmit.click()# 等待跳转后 高亮的页码数字是不是page_number,一定注意参数((By.CSS_SELECTOR,'css语法'),(text))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)))except TimeoutException:next_page(page_number)# 商品详情解析,这里只做了打印输入并未保存在数据库
def get_products():wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#mainsrp-itemlist > div > div > div:nth-child(1) > div:nth-child(1) > div.ctx-box.J_MouseEneterLeave.J_IconMoreNew")))res = browser.page_sourcehtml = BeautifulSoup(res, 'html.parser')# 每个上坪详情列表结果items= html.find_all('div',{'class':'ctx-box J_MouseEneterLeave J_IconMoreNew'})for item in items:print({'price':item.find('div',{'class':'price g_price g_price-highlight'}).find('strong').string,'pay_nums':item.find('div',{'class':'deal-cnt'}).string,'name':item.find('div',{'class':'row row-2 title'}).find('a').get_text().replace('\n','').replace(' ',''),'location':item.find('div',{'class':'location'}).string})# 主函数
def main():total = search()# 返回的是字符串,正则匹配返回页码数字total = int(re.compile('(\d+)').search(total).group(1))# print(type(total))for i in range(2,total+1):get_products()next_page(i)if __name__ == '__main__':main()
总结:
本人大四小白,不喜勿碰.如有错误欢迎指正,一起学习,共同进步.
- PhantomJS
本来打算用Phantomjs代替界面化浏览器结果发现,selenium和PhantomJS分道扬镳了,不过可以用无头FireFox或者Chrome浏览器代替.这里没有做研究.
selenium + Chrome 模拟浏览器爬淘宝信息相关推荐
- 使用selenium模拟浏览器,获取淘宝搜索页面商品名称销量等信息
作者:李忠林 Github: https://github.com/Leezhonglin Gitblog: https://leezhonglin.github.io/ 本文仅用于学习. 使用自动化 ...
- 解决selenium + chromedriver模拟登录被淘宝反爬
解决selenium + chromedriver模拟登录被淘宝反爬 问题 使用 selenium + webdriver 模拟淘宝登录时,出现滑动验证码反爬,尝试程序模拟滑动滑块,以及在程序打开的 ...
- 用selenium模拟浏览器登录淘宝识别滑动验证码
用selenium模拟浏览器登录淘宝,使用账号密码的方式登录淘宝,但是在登录的时候遇到需要滑动验证,使用selenium模拟点击滑块,滑动验证码完成登录. 本文的代码现测可用.做个记录,方便以后查看. ...
- Python爬虫之selenium爬虫,模拟浏览器爬取天猫信息
由于工作需要,需要提取到天猫400个指定商品页面中指定的信息,于是有了这个爬虫.这是一个使用 selenium 爬取天猫商品信息的爬虫,虽然功能单一,但是也算是 selenium 爬虫的基本用法了. ...
- python模拟登录爬淘宝模特信息
先模拟登录 再爬取照片 # -*- coding:utf-8 -*-import urllib import urllib2 import cookielib import re import web ...
- 使用selenium模仿手机浏览器访问淘宝网页
众所周知,selenium模拟浏览器进行页面访问是爬虫工具中较好用的方法.通过模拟浏览器可以很方便的访问很多需要通过登录验证才能访问的网页. 我们通过selenium其中访问h5手机端网页的办法解决这 ...
- python刷新页面_Python模拟浏览器爬取天猫信息
由于工作需要,需要提取到天猫400个指定商品页面中指定的信息,于是有了这个爬虫.这是一个使用 selenium 爬取天猫商品信息的爬虫,虽然功能单一,但是也算是 selenium 爬虫的基本用法了. ...
- Python模拟浏览器登录淘宝
因为前几天写了个Python登录教务网的爬虫,这几天又突然想到用Python登录淘宝试试,于是二话不说,代码走起.本来以为很简单,但一写我就傻眼了,登淘宝的涉及到很多东西,验证码,加密算法,用http ...
- selenium+phantomjs 模拟抓取淘宝分类信息
selenium+phantomjs集成到项目中做到无界面模拟用户行为,请参考https://github.com/Lixianshengchao/phanbedder.git https://git ...
最新文章
- 环境微生物期刊—FEMS Microbiology Ecology
- android stack error message is Fail to start the plugin
- Eclipse CDT中EOF输入的解决方法
- 自学python要看哪些书籍-学习Python编程的最好的7本书
- linux下ssh登录PIX防火墙
- 计算机专业毕业文案,我们毕业啦!|今天,没有文案
- linux内核spi总线驱动分析,Linux下的SPI总线驱动(三)
- 【重难点】【Java基础 07】变量类型、内部类、处理器指令优化
- 解析搜索引擎的Robots协议
- java保存文件filedialog保存路径 文件名_FileDialog文件名过滤问题
- 宇视服务器硬盘序列号,宇视科技云存储服务器
- .netcore3 下Signalr 关于Joson序列化后对象属性变小写的问题
- lua php 触摸精灵,触动精灵,触摸精灵-lua脚本入门
- UEBA 的当下与未来
- Grad-CAM简介
- 在物联网(IOT)的背景下是怎样定义物模型的
- STEP标准描述方法-EXPRESS语言
- 集体照的拍摄及后期合成
- 基于最大熵Maxent-ArcGis地理分布预测教程
- ai切换rgb模式_AI基础教程:如何更改CMYK模式?更改的两个方法
热门文章
- happypack打包报错TypeError: this.getOptions is not a function
- Linux kernel中断子系统之(五):驱动申请中断API【转】
- gdc服务器系统,gdc服务器远程
- SQL Server 2000 精简版 + 绿色版
- 设计人生的时刻表[转帖]
- 典型微型计算机控制系统的实例,微机原理与接口技术第8章微型计算机应用系统设计案例...
- iframe和iframe实现页面内嵌套一个页面(jsp)
- 【UE4】RTS建筑选中效果
- 云管理平台:OpenStack架构设计及详细解读
- 逼真的刺绣Photoshop插件-Realistic Embroidery 3.0汉化版 Win/Mac版通用