Python 爬虫 + MongoDB

原创 2016年08月30日 20:58:21
在以上两篇文章中已经介绍到了 Python 爬虫和 MongoDB , 那么下面我就将爬虫爬下来的数据存到 MongoDB 中去,首先来介绍一下我们将要爬取的网站, readfree 网站,这个网站非常的好,我们只需要每天签到就可以免费下载三本书,良心网站,下面我就将该网站上的每日推荐书籍爬下来。

这里写图片描述

利用上面几篇文章介绍的方法,我们很容易的就可以在网页的源代码中寻找到书籍的姓名和书籍作者的信息。

找到之后我们复制 XPath ,然后进行提取即可。源代码如下所示

# coding=utf-8

import re
import requests
from lxml import etree
import pymongo
import sys

reload(sys)
sys.setdefaultencoding('utf-8')


def getpages(url, total):
    nowpage = int(re.search('(\d+)', url, re.S).group(1))
    urls = []

    for i in range(nowpage, total + 1):
        link = re.sub('(\d+)', '%s' % i, url, re.S)
        urls.append(link)

    return urls


def spider(url):
    html = requests.get(url)

    selector = etree.HTML(html.text)

    book_name = selector.xpath('//*[@id="container"]/ul/li//div/div[2]/a/text()')
    book_author = selector.xpath('//*[@id="container"]/ul/li//div/div[2]/div/a/text()')

    saveinfo(book_name, book_author)


def saveinfo(book_name, book_author):
    connection = pymongo.MongoClient()
    BookDB = connection.BookDB
    BookTable = BookDB.books

    length = len(book_name)

    for i in range(0, length):
        books = {}
        books['name'] = str(book_name[i]).replace('\n','')
        books['author'] = str(book_author[i]).replace('\n','')
        BookTable.insert_one(books)

if __name__ == '__main__':
    url = 'http://readfree.me/shuffle/?page=1'
    urls = getpages(url,3)

    for each in urls:
        spider(each)

注意,在写入数据库的过程中不要一下子将字典中的数据写入数据库,我一开始就这么写的,但是我发现数据库中只有三条信息,其他信息都不见了。所以采用一条一条的写入。

还有源代码的开头部分,对默认编码的设置一定不可以省略,否则可能会报编码错误(真心感觉 Python 在编码这方面好容易出错,尴尬)。

有的人可能发现了,我将提取的信息转换成了字符串,然后使用 replace() 方法将 \n 去掉了,因为我发现在提取的书籍信息前后存在换行符,看着十分碍眼。

热情提醒一下,在程序运行的时候别忘记将你的 Mongo DB 运行起来,下来看看结果

这里写图片描述

好了,就这样,如果发现代码哪里存在错误或者说有可以改善的地方,希望留言给我,感谢。

版权声明:若要转载,请注明出处

相关文章推荐

scrapy的使用,修正《Python下用Scrapy和MongoDB构建爬虫系统》

修改了《Python下用Scrapy和MongoDB构建爬虫系统 》http://python.jobbole.com/81320/ 的一点小问题 1,创建项目:scrapy crawl air2,...

Python+MongoDB 爬虫实战

工具准备及爬虫搭建 Scrapy(python写成的爬虫框架) 在前一篇 Scrapy爬虫入门 里有写到Scrapy的安装和基本使用,他的特点是每个不同的page都自己定制一个不同的Spi...

python爬虫实战:抓取猫眼电影TOP100存放到MongoDB中

猫眼网页非常简单,就不做网页分析了,直接上代码 main.py url='http://maoyan.com/board/4?offset={}0' from get_info impor...

python爬虫补充章,在总控节点那台机器上安装mongodb和redis数据库 都是非apt方法

因为发现爬虫爬取出来的数据如果按照表结构划分后存储,不仅麻烦而且非常大的冗余 干脆试试用这样的非关系数据库来试试存储效果如何。 这里我不打算用redis 进行比较,因为他是内存数据库,他擅长的领域应该...

python写爬虫3-MongoDB数据缓存(采集58出租房信息)

python写爬虫3-MongoDB数据缓存(采集58出租房信息)有时,我们下载某个页面并抓取部分数据后,之后可能还会需要重新下载该页面,抓取其他数据。对于小网站而言,这不算什么大问题;但对于那些拥有...

python3 爬虫日记(二) 将数据存到Mongodb

python版本:3.6.1 开发工具:PyCharm社区版,Anaconda3 数据库:MongoDB 可视化MongoDB工具:MongoVUE 1.开启数据库后,打开MongoV...

python3 [爬虫入门实战]scrapy爬取盘多多五百万数据并存mongoDB

总结:虽然是第二次爬取,但是多多少少还是遇到一些坑,总的结果还是好的,scrapy比多线程多进程强多了啊,中途没有一次被中断过。 此版本是盘多多爬取数据的scrapy版本,涉及数据量较大,到现在已...

Python 爬虫7——自定义Item Pipeline将数据存入MongoDB

上篇我们介绍了scrapy的安装和基本的使用,本篇主要补充一个比较实用的操作,就是如何把从URL页面爬取到的数据保存到数据库中,以便于其他地方的使用,这里选择了比较简单的MongoDB作为存储数据的数...

python3 [爬虫入门实战]爬虫之mongoDB数据库的安装配置与可视化

1 mongodb数据库的安装与配置 2 mongodb可视化工作 3 mongodb在python3中的简单应用

python3 [爬虫入门实战]爬虫之scrapy爬取游天下南京短租房存mongodb

总结:总的来说不是很难,只是提取的字段有些多。总共获取了一个120多个南京房租信息1 爬取的item# -*- coding: utf-8 -*-# Define here the models fo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python 爬虫 + MongoDB
举报原因:
原因补充:

(最多只允许输入30个字)