python爬取大众点评并写入mongodb数据库和redis数据库

抓取大众点评首页左侧信息,如图:

我们要实现把中文名字都存到mongodb,而每个链接存入redis数据库。

因为将数据存到mongodb时每一个信息都会有一个对应的id,那样就方便我们存入redis可以不出错。

# -*- coding: utf-8 -*-
import re
from urllib.request import urlopen
from urllib.request import Request
from bs4 import BeautifulSoup
from lxml import etree
import pymongo

client = pymongo.MongoClient(host="127.0.0.1")
db = client.dianping            #库名dianping
collection = db.classification          #表名classification

import redis        #导入redis数据库
r = redis.Redis(host=‘127.0.0.1‘, port=6379, db=0)

# client = pymongo.MongoClient(host="192.168.60.112")
# myip = client[‘myip‘]  # 给数据库命名
def secClassFind(selector, classid):
    secItems = selector.xpath(‘//div[@class="sec-items"]/a‘)
    for secItem in secItems:
        url = secItem.get(‘href‘)       #得到url
        title = secItem.text
        classid = collection.insert({‘classname‘: title, ‘pid‘: classid})
        classurl = ‘%s,%s‘ % (classid, url) #拼串
        r.lpush(‘classurl‘, classurl)   #入库

def Public(url):
    headers = {‘User-Agent‘: ‘Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6‘}    #协议头
    req_timeout = 5
    req = Request(url=url, headers=headers)
    f = urlopen(req, None, req_timeout)
    s = f.read()
    s = s.decode("utf-8")
    # beautifulsoup提取
    soup = BeautifulSoup(s, ‘html.parser‘)
    links = soup.find_all(name=‘li‘, class_="first-item")
    for link in links:
        selector = etree.HTML(str(link))
        # indexTitleUrls = selector.xpath(‘//a[@class="index-title"]/@href‘)
        # # 获取一级类别url和title
        # for titleurl in indexTitleUrls:
        #     print(titleurl)
        indexTitles = selector.xpath(‘//a[@class="index-title"]/text()‘)
        for title in indexTitles:
            # 第二级url
            print(title)
            classid = collection.insert({‘classname‘: title, ‘pid‘: None})
            secClassFind(selector, classid)
            print(‘---------‘)
        # secItems = selector.xpath(‘//div[@class="sec-items"]/a‘)
        # for secItem in secItems:
        #     print(secItem.get(‘href‘))
        #     print(secItem.text)
        print(‘-----------------------------‘)
        #
        # myip.collection.insert({‘name‘:secItem.text})
        # r.lpush(‘mylist‘, secItem.get(‘href‘))

        # collection.find_one({‘_id‘: ObjectId(‘5a14c8916d123842bcea5835‘)})  # connection = pymongo.MongoClient(host="192.168.60.112")  # 连接MongDB数据库

# post_info = connection.myip  # 指定数据库名称(yande_test),没有则创建
# post_sub = post_info.test  # 获取集合名:test
Public(‘http://www.dianping.com/‘)

  

时间: 2024-11-08 23:04:27

python爬取大众点评并写入mongodb数据库和redis数据库的相关文章

python爬虫实例详细介绍之爬取大众点评的数据

python 爬虫实例详细介绍之爬取大众点评的数据 一. Python作为一种语法简洁.面向对象的解释性语言,其便捷性.容易上手性受到众多程序员的青睐,基于python的包也越来越多,使得python能够帮助我们实现越来越多的功能.本文主要介绍如何利用python进行网站数据的抓取工作.我看到过利用c++和Java进行爬虫的代码,c++的代码很复杂,而且可读性.可理解性较低,不易上手,一般是那些高手用来写着玩加深对c++的理解的,这条路目前对我们不通.Java的可读性还可以,就是代码冗余比较多,

用JAVA制作一个爬取商品信息的爬虫(爬取大众点评)

很多企业要求利用爬虫去爬取商品信息,一般的开发模型如下: for i=1;i<=最大页号;i++ 列表页面url=商品列表页面url+?page=i(页号) 列表页面=爬取(列表页面url) 商品链接列表=抽取商品链接(列表页面)  for 链接 in 商品链接列表: 商品页面=爬取(链接) 抽取(商品页面); 这样的模型看似简单,但是有一下几个问题: 1)爬虫没有线程池支持. 2)没有断点机制. 3)没有爬取状态存储,爬取商品网站经常会出现服务器拒绝链接(反问次数过多),导致一旦出现 拒绝链接

网络爬虫入门——案例三:爬取大众点评的商户信息

pyspider:http://demo.pyspider.org/ CSS选择器:http://www.w3school.com.cn/cssref/css_selectors.asp Beautiful Soup:http://beautifulsoup.readthedocs.io/zh_CN/latest/ 正则表达式:http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html

Scrapy爬取大众点评

最近想吃烤肉,所以想看看深圳哪里的烤肉比较好吃,于是自己就开始爬虫咯.这是个静态网页,有反爬机制,我在setting和middlewares设置了反爬措施 Setting # -*- coding: utf-8 -*- # Scrapy settings for dazhong project # # For simplicity, this file contains only settings considered important or # commonly used. You can

利用Python爬取豆瓣电影

目标:使用Python爬取豆瓣电影并保存MongoDB数据库中 我们先来看一下通过浏览器的方式来筛选某些特定的电影: 我们把URL来复制出来分析分析: https://movie.douban.com/tag/#/?sort=T&range=0,10&tags=%E7%94%B5%E5%BD%B1,%E7%88%B1%E6%83%85,%E7%BE%8E%E5%9B%BD,%E9%BB%91%E5%B8%AE 有3个字段是非常重要的: 1.sort=T 2.range=0,10 3.tag

python爬取基础网页图片

python基础爬虫总结 1.爬取信息原理 与浏览器客户端类似,向网站的服务器发送一个请求,该请求一般是url,也就是网址.之后服务器响应一个html页面给客户端,当然也有其他数据类型的信息,这些就是网页内容.我们要做的就是解析这些信息,然后选择我们想要的,将它爬取下来按要求写入到本地. 2. 爬虫基本流程 1.获取网页的响应的信息 这里有两个常用的方法 html = requests.get(url) return html.text 或者 html = urllib.request.urlo

没有内涵段子可以刷了,利用Python爬取段友之家贴吧图片和小视频(含源码)

由于最新的视频整顿风波,内涵段子APP被迫关闭,广大段友无家可归,但是最近发现了一个"段友"的app,版本更新也挺快,正在号召广大段友回家,如下图,有兴趣的可以下载看看(ps:我不是打广告的,没收广告费的) 同时,之前同事也发了一个贴吧的段子聚居地,客官稍等,马上奉上连接:段友之家?https://tieba.baidu.com/f?ie=... 然后呢,看到上面,确实好多段友在上面,于是乎,我就想爬取他们的图片和小视频,就有了这篇文章的主题: 其实吧,用Python爬取网站数据是最基

通过python 爬取网址url 自动提交百度

通过python 爬取网址url 自动提交百度 昨天同事说,可以手动提交百度这样索引量会上去. 然后想了下.是不是应该弄一个py 然后自动提交呢?想了下.还是弄一个把 python 代码如下: import os import re import shutil REJECT_FILETYPE = 'rar,7z,css,js,jpg,jpeg,gif,bmp,png,swf,exe' #定义爬虫过程中不下载的文件类型 def getinfo(webaddress): #'#通过用户输入的网址连接

用Python爬取网页上的小说,让你从此告别书荒!

人生苦短,我用Python.有道爱看小说的小伙伴们,在看小说的期间总会遇到那么一段书荒期,在这段期间想看书却找不到,要么就是要VIP,要么就是下载不了.所以学会爬取网站上的小说是很有必要的,今天就以爬取笔趣阁小说为例,进行网页上小说的爬取.首先当我们打开笔趣阁的网页时,我们会看到很多的小说列表,如下图所示: ? 就拿爬取图上所示的小说来说,我们要进行以下的几个步骤: 爬取小说首先要构建请求表头: ? 然后我们的获取下载链接: ? 接下来我们进行文章内容的爬取: ? 最后我们将爬取来的小说写入到文