python3实现爬取淘宝页面的商品的数据信息(selenium+pyquery+mongodb)
2017-11-11 00:40
981 查看
1.环境须知
做这个爬取的时候需要安装好python3.6和selenium、pyquery等等一些比较常用的爬取和解析库,还需要安装MongoDB这个分布式数据库。
2.直接上代码
spider.py
config.py
3.运行结果
上面我爬取了淘宝页面搜索‘美食’关键词后的商品的信息,你也可以根据修改关键词爬取其他不同的信息。下面是存储在mongodb里面的数据截图,以表格的形式展示出来了。
。。。。。。
这些是50个商品的数据,一共爬取了100页的商品应该有几千条的数据,就不一一展示了。
打完收工。
做这个爬取的时候需要安装好python3.6和selenium、pyquery等等一些比较常用的爬取和解析库,还需要安装MongoDB这个分布式数据库。
2.直接上代码
spider.py
import re from config import * import pymongo 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 #mongodb配置信息 client = pymongo.MongoClient(MONGO_URL) db = client[MONGO_DB] #打开chrome浏览器 browser = webdriver.Chrome() wait = WebDriverWait(browser, 10) #第一次搜索页面的方法 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() #运用selenium进行翻页的操作 def next_page(page_number): print('正在翻页') 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) #运用pyquery进行页面的解析 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: products = { '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(products) save_to_mongo(products) #数据保存到mongodb中 def save_to_mongo(result): try: if db[MONGO_TABLE].insert(result): print('存储成功', result) except Exception: print('存储失败', 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()
config.py
#mongodb数据库的配置信息 MONGO_URL = 'localhost' MONGO_DB = 'taobao' MONGO_TABLE = 'product' #搜索关键词的更改 SERVICE_ARGS = ['--load-images=false'] KEYWORD = '美食'
3.运行结果
上面我爬取了淘宝页面搜索‘美食’关键词后的商品的信息,你也可以根据修改关键词爬取其他不同的信息。下面是存储在mongodb里面的数据截图,以表格的形式展示出来了。
。。。。。。
这些是50个商品的数据,一共爬取了100页的商品应该有几千条的数据,就不一一展示了。
打完收工。
相关文章推荐
- python3 selenium+re+pyquery+mongodb爬取并保存淘宝美食商品
- Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
- Python+Selenium 自动化实现实例-获取页面元素信息
- 使用python + selenium爬取淘宝商品信息
- Python爬取淘宝页面的数据,包含商品名字,价格及地址
- python基于selenium+PhantomJS实现用提交表单,并点击按钮功能,获取返回的页面源码和ur等信息l。
- 使用python利器selenium工具模拟浏览器运行并爬取淘宝商品信息
- selenium和pyquery爬取淘宝美食商品信息
- python selenium 爬取淘宝商品数据
- 实现商品库存信息管理页面(AngularJS过滤器,orderBy排序,批量删除数据)
- Android中仿淘宝商品详情ViewPager页面数据手动滑动
- Python+Selenium实现股票板块数据模拟抓取
- 简单的抓取淘宝关键字信息、图片的Python爬虫|Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第二篇)
- python实现爬取千万淘宝商品的方法_python_脚本之家
- python实现的json数据以HTTP GET,POST,PUT,DELETE方式页面请求
- python2.7+selenium2实现淘宝滑块自动认证
- python简单爬取页面信息及实现打开、关闭浏览器
- 实现淘宝商品页面的滑块浮动切换页面的效果修改版
- python如何实现excel数据添加到mongodb
- python操作mongodb根据_id查询数据的实现方法