资源简介

内容: 根据已有的的"大众点评网"酒店主页的URL地址,自动抓取所需要的酒店的名称、图片、经纬度、酒店价格、用户评论数量以及用户评论的用户ID、用户名字、评分、评论时间等,并且将爬取成功的内容存放到.txt文档中。 平台:Python 3.5.3;Eclipse for Pydev 主程序:DianpingSpider.py 注意:设置了时间,模拟器等,较为有效地防止大众点评网的反爬虫结束检测到同一个IP访问频繁而屏蔽爬取,但是未能实现IP代理。

资源截图

代码片段和文件信息

‘‘‘
程序名:   DianPingSpider
功能:    根据已有的的“大众点评网“酒店主页的URL地址,自动抓取所需要的酒店的名称、图片、经纬度、酒店价格、用户评论数量以及用户评论的用户ID、用户名字、评分、评论时间
语言:    python3.5.2
Created on 2016-10-30
@author: Lei Gaiceong
‘‘‘
import urllib.request
import re
import time
import picture #获取酒店图片
import urlspider #获取酒店的URL
import position
import os
import random
import PriceAndScores
 
# 统计所有酒店的评价信息,存入文本
def getRatingAll(fileIn):
    count =0          # 计数,显示进度
    websitenumber=0
    for line in open(fileIn‘r‘):     # 逐行读取并处理文件,即hotel的url
        count=line.split(‘\t‘)[0]
        line=line.split(‘\t‘)[1] 
        websitenumber+=1
        print(“正在抓取第%s个网址的酒店信息“%(websitenumber))
        try:
            print(“正在抓取第%s家酒店的信息,网址为%s“%(countline.strip(‘\n‘)))
            # 获取酒店编号
            hotelid = line.strip(‘\n‘).split(‘/‘)[4]
            #print(‘该酒店的hotelid是 : ‘ hotelid)
 
            # 拼凑出该酒店第一页“评论页面“的url
            url = line.strip(‘\n‘) + “/review_more“
            #print(‘该酒店第一页“评论页面“的url是‘ url)
             
            # 模拟浏览器打开url
            headers = (‘User-Agent‘ ‘Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko‘)
            opener = urllib.request.build_opener()
            opener.addheaders = [headers]
            data = opener.open(url).read()
            #print(data)  当访问大众点评网过于次数频繁的时候,大众点评网的反爬虫技术会封锁本机的IP地址,此时data就会出现异常,无法打印正常的html
            data = data.decode(‘utf-8‘ ‘ignore‘)
            #print(data)
            
            # 获取酒店用户评论数目
            rate_number = re.compile(r‘全部点评\((.*?)\)‘ re.DOTALL).findall(data)
            rate_number = int(‘‘.join(rate_number))  # 把列表转换为str,把可迭代列表里面的内容用‘ ’连接起来成为str,再进行类型转换
            print(“第%d家酒店的评论数为%s“ % (websitenumber rate_number))
             
            if(rate_number<100):#若酒店评论数目少于100条,则不跳过该酒店,不再挖取信息
                continue
                         
            # 获取酒店名称和地址
            opener1 = urllib.request.build_opener()
            opener1.addheaders = [headers]
            hotel_url =opener1.open(line).read()
            hotel_data = hotel_url.decode(‘utf-8‘)#ignore是忽略其中有异常的编码,仅显示有效的编码
            #print(hotel_data)  #当访问大众点评网过于次数频繁的时候,大众点评网的反爬虫技术会封锁本机的IP地址,此时hotel_data就会出现异常,无法打印正常的html
            # 获取酒店名称
            shop_name=re.compile(u‘(.*?)    ‘re.DOTALL).findall(hotel_data)
            shop_name=str(‘‘.join(shop_name)) #类型转换
            shop_name=shop_name.strip() #去掉字符串中的换行符
            # 获取酒店地址
            address=re.compile(u‘地址: (.*?)\n         ‘re.DOTALL).findall(hotel_data)
            address=str(‘‘.join(address))
            #print(address)
            
            # 获取酒店经纬度
            poi=re.compile(r‘poi: \“(.*?)\“‘re.DOTALL).findall(hotel_data)
            poi=str(‘‘.join(poi))
            (longitudelatitude)=position.getPosition(poi)
            print(“longitude:%s°Elatitude:%s°N“%(longitudelati

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-10-30 21:36  DianPingSpider\
     文件        9368  2016-10-30 21:45  DianPingSpider\DianpingSpider.py
     目录           0  2016-10-30 21:34  DianPingSpider\hotel\
     目录           0  2016-10-30 21:34  DianPingSpider\image\
     文件        1038  2016-10-10 14:36  DianPingSpider\picture.py
     文件        1426  2016-10-30 20:50  DianPingSpider\position.py
     文件        1080  2016-10-30 00:31  DianPingSpider\PriceAndScores.py
     文件        1757  2016-10-30 21:00  DianPingSpider\urlspider.py
     目录           0  2016-10-30 21:05  DianPingSpider\__pycache__\
     文件         977  2016-10-10 14:36  DianPingSpider\__pycache__\picture.cpython-35.pyc
     文件        1547  2016-10-30 20:54  DianPingSpider\__pycache__\position.cpython-35.pyc
     文件        1081  2016-10-30 00:56  DianPingSpider\__pycache__\PriceAndScores.cpython-35.pyc
     文件         388  2016-10-23 15:50  DianPingSpider\__pycache__\test.cpython-35.pyc
     文件        1539  2016-10-22 14:59  DianPingSpider\__pycache__\urlspider.cpython-35.pyc
     文件        5876  2016-10-23 15:50  DianPingSpider\__pycache__\__init__.cpython-35.pyc

评论

共有 条评论