鱼C论坛

 找回密码
 立即注册

当当网 爬取Python书籍 信息,并保存到MongoDB

已有 512 次阅读2018-12-10 17:59 |个人分类:爬虫

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from pyquery import PyQuery as pq
from config import *
import pymongo


client = pymongo.MongoClient(MONGO_URL)
db = client[MONGO_DB]

browser = webdriver.Firefox()
wait = WebDriverWait(browser, 10)

def search():
print('正在搜索')
try:
browser.get('http://www.dangdang.com/')
input = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#key_S')))
submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#form_search_new > input.button')))
input.send_keys(KEYWORD)
submit.click()
total = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,".paging > ul:nth-of-type(1) > li:nth-of-type(9) > a:nth-of-type(1)")))
get_products()
return total.text
except TimeoutException:
return search()

def next_page(page_number):
print('正在翻页', page_number)
try:
input = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#t__cp')))
submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#click_get_page')))
input.clear()
input.send_keys(page_number)
submit.click()
wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, '.current'), str(page_number)))
get_products()
except TimeoutException:
next_page(page_number)

def get_products():
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#search_nature_rg .bigimg li')))
html = browser.page_source
doc = pq(html)
items = doc('#search_nature_rg .bigimg li').items()
for item in items:
product = {
'img': item.find('a > img').attr('data-original'),
'title': item.find('p.name a').attr('title'),
'price': item.find('p.price > span.search_now_price').text(),
'author': item.find('p.search_book_author > span> a:first-child').attr('title'),
'publish_data':item.find('p.search_book_author > span:nth-of-type(2)').text(),
'publisher':item.find('p.search_book_author > span:nth-of-type(3) > a').text(),
'comments': item.find('p.search_star_line > a').text(),
'book_detail': item.find('p.detail').text()
}
print(product)
save_to_mongo(product)

def save_to_mongo(result):
try:
if db[MONGO_TABLE].insert(result):
print('保存MongoDB成功', result)
except Exception:
print('存储到MongoDB错误', result)

def main():
try:
total = search()
total = int(total)
for i in range(2, total + 1):
next_page(i)
except Exception:
print('出错啦')
finally:
browser.close()

if __name__ == '__main__':
main()D:\Python\Python36\python.exe C:/User、PycharmProjects/untitled1/dandan.py 正在搜索 {'img': None, 'title': ' Python编程(第四版)Python高手进阶宝典,包含大量实用Python编程技巧,涵盖Python编程的方方面面,涵盖Python 3.X,是Python领域经典的开发指南。', 'price': '¥99.00', 'author': 'Mark Lutz', 'publish_data': '/2014-12-01', 'publisher': '中国电力出版社', 'comments': '5676条评论', 'book_detail': '重磅推荐: Python袖珍指南(第五版) 本书是 Python 应用的手册指南,它涵盖了 Python 编程的方方面面,从系统管理到图形界面编程,从文本处理到网络编程,从数据库到语言扩展 这些主题的探讨中,作者提供了大量的实际代码,通过对这些代码的研读,对读者的 Python 编程水平以及实际业务问题的解决都将不无裨益。'} 保存MongoDB成功 {'img': None, 'title': ' Python编程(第四版)Python高手进阶宝典,包含大量实用Python编程技巧,涵盖Python编程的方方面面,涵盖Python 3.X,是Python领域经典的开发指南。', 'price': '¥99.00', 'author': 'Mark Lutz', 'publish_data': '/2014-12-01', 'publisher': '中国电力出版社', 'comments': '5676条评论', 'book_detail': '重磅推荐: Python袖珍指南(第五版) 本书是 Python 应用的手册指南,它涵盖了 Python 编程的方方面面,从系统管理到图形界面编程,从文本处理到网络编程,从数据库到语言扩展 这些主题的探讨中,作者提供了大量的实际代码,通过对这些代码的研读,对读者的 Python 编程水平以及实际业务问题的解决都将不无裨益。', '_id': ObjectId('5c0e2f4b409a6d376080b119')} {'img': 'http://img3m0.ddimg.cn/67/4/24003310-1_b_7.jpg', 'title': ' Python编程 从入门到实践【图灵程序设计丛书】Python3.5编程入门图书 机器学习 数据处理 网络爬虫热门编程语言 从基本概念到完整项目开发 帮助零基础读者迅速掌握Python编程 附赠源代码文件', 'price': '¥62.00', 'author': '[美]埃里克·马瑟斯(Eric Matthes)', 'publish_data': '/2016-07-01', 'publisher': '人民邮电出版社', 'comments': '50306条评论', 'book_detail': '上到有编程基础的程序员,下到10岁少年,想入门Python并达到可以开发实际项目的水平,本书是读者*! 本书是一本全面的从入门到实践的Python编程教程,带领读者快速掌握编程基础知识、编写出能解决实际问题的代码并开发复杂项目。 书中内容分为基础篇和实战篇两部分。基础篇介绍基本的编程概念,如列表、字典、类和循环,并指导读者编写整洁且易于理解的代码。另外还介绍了如何让程序能够与用户交互,以及如何在代码运行前进行测试。实战篇介绍如何利用新学到的知识开发功能丰富的项目:2D游戏《外星人入侵》,数据可视化实战,Web应用程序。'} 保存MongoDB成功 {'img': 'http://img3m0.ddimg.cn/67/4/24003310-1_b_7.jpg', 'title': ' Python编程 从入门到实践【图灵程序设计丛书】Python3.5编程入门图书 机器学习 数据处理 网络爬虫热门编程语言 从基本概念到完整项目开发 帮助零基础读者迅速掌握Python编程 附赠源代码文件', 'price': '¥62.00', 'author': '[美]埃里克·马瑟斯(Eric Matthes)', 'publish_data': '/2016-07-01', 'publisher': '人民邮电出版社', 'comments': '50306条评论', 'book_detail': '上到有编程基础的程序员,下到10岁少年,想入门Python并达到可以开发实际项目的水平,本书是读者*! 本书是一本全面的从入门到实践的Python编程教程,带领读者快速掌握编程基础知识、编写出能解决实际问题的代码并开发复杂项目。 书中内容分为基础篇和实战篇两部分。基础篇介绍基本的编程概念,如列表、字典、类和循环,并指导读者编写整洁且易于理解的代码。另外还介绍了如何让程序能够与用户交互,以及如何在代码运行前进行测试。实战篇介绍如何利用新学到的知识开发功能丰富的项目:2D游戏《外星人入侵》,数据可视化实战,Web应用程序。', '_id': ObjectId('5c0e2f4b409a6d376080b11a')} {'img': 'http://img3m4.ddimg.cn/6/6/25333314-1_b_2.jpg', 'title': ' Python从菜鸟到高手JetBrains官方推荐图书!JetBrains官大中华区市场部经理赵磊作序!送2400分钟同步视频课程!500个案例,400道Python练习题,电子书,10万行源代码,6个实战项目!', 'price': '¥64.00', 'author': '李宁', 'publish_data': '/2018-09-01', 'publisher': '清华大学出版社', 'comments': '521条评论', 'book_detail': 'JetBrains官方推荐图书!JetBrains官大中华区市场部经理赵磊作序!送2400分钟同步视频课程!500个案例,400道Python练习题,电子书,10万行源代码,6个实战项目! 李宁 私房菜谱 : ? Python语法基础 ? Python高级编程 ? Python Web开发 ? Python科学计算与数据分析 ? Python Web爬虫技术 ? Python项目实战 李宁 实战项目 : ? Web项目实战:基于Flask的美团网 ? Web项目实战:基于Django的58同城 ? 爬虫项目实战:天气预报服务API ? 爬虫项目实战:胸罩销售数据分析 ? GUI项目实战:动态修改域名指向的IP ? 游戏项目实战:俄罗斯方块'} 保存MongoDB成功 {'img': 'http://img3m4.ddimg.cn/6/6/25333314-1_b_2.jpg', 'title': ' Python从菜鸟到高手JetBrains官方推荐图书!JetBrains官大中华区市场部经理赵磊作序!送2400分钟同步视频课程!500个案例,400道Python练习题,电子书,10万行源代码,6个实战项目!', 'price': '¥64.00', 'author': '李宁', 'publish_data': '/2018-09-01', 'publisher': '清华大学出版社', 'comments': '521条评论', 'book_detail': 'JetBrains官方推荐图书!JetBrains官大中华区市场部经理赵磊作序!送2400分钟同步视频课程!500个案例,400道Python练习题,电子书,10万行源代码,6个实战项目! 李宁 私房菜谱 : ? Python语法基础 ? Python高级编程 ? Python Web开发 ? Python科学计算与数据分析 ? Python Web爬虫技术 ? Python项目实战 李宁 实战项目 : ? Web项目实战:基于Flask的美团网 ? Web项目实战:基于Django的58同城 ? 爬虫项目实战:天气预报服务API ? 爬虫项目实战:胸罩销售数据分析 ? GUI项目实战:动态修改域名指向的IP ? 游戏项目实战:俄罗斯方块', '_id': ObjectId('5c0e2f4b409a6d376080b11b')} {'img': 'http://img3m8.ddimg.cn/85/30/23961748-1_b_10.jpg', 'title': ' Python核心编程 第3版畅销经典的Python基础教程学习手册进阶图书 兼顾Python2和Python3 机器学习 数据处理 网络爬虫热门编程语言 Python开发人员的案头常备', 'price': '¥49.50', 'author': '[美]卫斯理 春(Wesley Chun)', 'publish_data': '/2016-05-01', 'publisher': '人民邮电出版社', 'comments': '15817条评论', 'book_detail': '全面涵盖当今应用开发中的众多领域为中级Python开发人员提供杰出实践方法涵盖大量实用的代码案例每章末尾的习题有助于巩固所学知识 想进一步提升Python编程水平?请深入分析真实应用程序中使用的大量相关主题涵盖了正则表达式、Internet/网络编程、GUI、SQL/数据库/ORM、多线程、Web开发了解当前的开发区域,比如Google 、Twitter、MongoDB、OAuth、Python 3迁移、Java/Jython囊括有关Django、Google App Engine、CSV/JSON/XML和Microsoft Office的全新内容。包含Python 2和Python 3代码,以便立即可以使用提供了代码片段、互动案例和实用练习,旨在巩固Python技能 Python是一种灵活、可靠且具有表现力的编程语言,它将编译语言的强大与脚本语言的简洁性、快速开发特性整合起来。在《 Python核心编程 第3版 》中,杰出Python开发人员兼企业培训师Wesley Chun会帮助您将Python技能提升到更高的水平。《 P'} 保存MongoDB成功 {'img': 'http://img3m8.ddimg.cn/85/30/23961748-1_b_10.jpg', 'title': ' Python核心编程 第3版畅销经典的Python基础教程学习手册进阶图书 兼顾Python2和Python3 机器学习 数据处理 网络爬虫热门编程语言 Python开发人员的案头常备', 'price': '¥49.50', 'author': '[美]卫斯理 春(Wesley Chun)', 'publish_data': '/2016-05-01', 'publisher': '人民邮电出版社', 'comments': '15817条评论', 'book_detail': '全面涵盖当今应用开发中的众多领域为中级Python开发人员提供杰出实践方法涵盖大量实用的代码案例每章末尾的习题有助于巩固所学知识 想进一步提升Python编程水平?请深入分析真实应用程序中使用的大量相关主题涵盖了正则表达式、Internet/网络编程、GUI、SQL/数据库/ORM、多线程、Web开发了解当前的开发区域,比如Google 、Twitter、MongoDB、OAuth、Python 3迁移、Java/Jython囊括有关Django、Google App Engine、CSV/JSON/XML和Microsoft Office的全新内容。包含Python 2和Python 3代码,以便立即可以使用提供了代码片段、互动案例和实用练习,旨在巩固Python技能 Python是一种灵活、可靠且具有表现力的编程语言,它将编译语言的强大与脚本语言的简洁性、快速开发特性整合起来。在《 Python核心编程 第3版 》中,杰出Python开发人员兼企业培训师Wesley Chun会帮助您将Python技能提升到更高的水平。《 P', '_id': ObjectId('5c0e2f4b409a6d376080b11c')} {'img': 'http://img3m2.ddimg.cn/1/5/23997502-1_b_6.jpg', 'title': ' Python编程快速上手 让繁琐工作自动化(Python3编程从入门到实践 新手学习必备用书)Python3编程从入门到实践美亚畅销Python编程入门图书 Python3实战指南 带你快速实现Python高效编程', 'price': '¥34.50', 'author': '[美] Al Sweigart 斯维加特', 'publish_data': '/2016-06-01', 'publisher': '人民邮电出版社', 'comments': '11935条评论', 'book_detail': '亚马逊畅销Python编程图书,帮助你通过编程快速实现工作自动化在本书中,你将学习利用Python 编程,在几分钟内完成手工需要几小时的工作,而事先却无需具备编程经验。一旦掌握了编程的基础知识,你就可以毫不费力地创建Python 程序,完成高效的自动化工作,包括:● 在一个文件或多个文件中搜索文本;● 创建、更新、移动和重命名文件和文件夹;● 搜索网页和下载的在线内容;● 在任意大小的Excel电子表格中更新和格式化数据;● 拆分、合并PDF文件,以及如何加水印和加密;● 发送提醒邮件和文本通知;● 填写在线表格。本书的作者Al Sweigart是一位杰出Python程序员,他还是《Python 密码学编程》、《Python 游戏编程快速上手》和《Python 和Pygame 游戏开发指南》的作者。'}


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 08:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部