资源简介
根据爬到的"大众点评网"酒店主页的URL地址,自动抓取所有用户的"ID、name、评分、时间保存下来"我的 v2版本
代码片段和文件信息
‘‘‘
程序名: drdianping2_s
功能: 根据爬到的“大众点评网“酒店主页的URL地址,自动抓取所有用户的“ID、name、评分、时间保存下来“。
(目前大众点评刚进去酒店主页默认是上海地区的酒店)
语言: python3.4
创建时间: 2016-4-13
作者: dairen
‘‘‘
import re
from collections import deque
import http.cookiejar
import urllib.request
import urllib.parse
def getOpener(head):
# deal with the Cookies
cj = http.cookiejar.CookieJar()
pro = urllib.request.HTTPCookieProcessor(cj)
opener = urllib.request.build_opener(pro)
header = []
for key value in head.items():
elem = (key value)
header.append(elem)
opener.addheaders = header
return opener
#定义变量
queue = deque()
visited = set()
SleepNum = 0
count =1 # 处理的queue中url的数目
breaknumber = 0 # 计数,发生异常的url数
#先写输出文件的头
fileOut = “D:/rating.txt“
fileOp = open(fileOut ‘a‘ encoding=“utf-8“)
fileOp.write( “%12s\t%12s\t%20s\t%15s\t%15s\t%15s\t%15s\t\n“%(“hotelid““userid““username““rate_room““rate_service““rate_total““rate_time“))
fileOp.close()
#先把opener做出来
head = {‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko‘}
opener = getOpener(head)
# www.dianping.com/shanghai/hotel/p2
# 大众点评进去有50页酒店,每页15家酒店,地址类似于上面
pagelist = range(151)
urlnum = 1
save_path = ‘D:\\hotelhomes.txt‘
fileOp = open(save_path ‘a‘ encoding=“utf-8“)
for k1 in range(050):
tempurlpag = “http://www.dianping.com/shanghai/hotel/p“+str(pagelist[k1])
#queuepag.append(tempurlpag)
#下面对于当前页拿到每个酒店网址并加入队列
op = opener.open(tempurlpag)
if ‘html‘ not in op.getheader(‘Content-Type‘):
continue
data1 = op.read().decode(encoding=‘UTF-8‘)
# onclick=“window.open(‘/shop/2503441‘)
#用转意符再把‘给转义了
linkre = re.compile(r‘onclick=“window.open\(\‘(.*?)\‘\)‘ re.DOTALL).findall(data1)
for k2 in range(0 len(linkre)):
tempurlhotel = “http://www.dianping.com“ + linkre[k2]
queue.append(tempurlhotel)
fileOp.write(tempurlhotel+‘\n‘)
#print(‘目前是第: %d 页的第: %d 个酒店,其地址是 :%s‘%(k1+1k2+1tempurlhotel))
print(‘第: %d 页抓取完成!‘%k1)
fileOp.close()
print(“抓取上海地区各酒店主页完毕!\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n“)
while queue:
tempurl = queue.popleft() # 队首元素出队
visited |= {tempurl} # 标记为已访问
try:
# 酒店编号
hotelid = tempurl.split(‘/‘)[4]
# print(‘该酒店的hotelid是 : ‘ hotelid)
# 拼凑出该酒店第一页“评论页面“的url
url = tempurl+ “/review_more“
# print(‘该酒店第一页“评论页面“的url是‘ url)
op = opener.open(url)
data = op.read()
# save_path = ‘D:\\temp.out‘
# f_obj = open(save_path ‘wb‘)
# f_obj.write(data)
# f_obj.close()
data = data.decode(‘utf-8‘ ‘ignore‘)
# 对于下面这段str匹配
# title=““>全部点评(1195)
# 列表形式这里不是俩括号的意思,而是用转义符把1195外面的圆括号分开,flag为DOTALL可以匹配任何字符包括换行(newline)
rate_number = re.compile(r‘全部点评\((.*?)\
- 上一篇:Python程序设计实验指导书
- 下一篇:同花顺日线文件解析
相关资源
- python3.5可用的scipy
- PYTHON3 经典50案例.pptx
- python3.5.2.chm官方文档
- python3.5.4_windows下32与64位安装包
- GitHack-python3.zip
- Python3.x+PyQtChart实现数据可视化界面
- python3根据模板图片批量自动制作个性
- 《机器学习实战》源代码Python3
- Python3.5.2的IDLE汉化版计算机等级考试
- python3.5 百度ai人脸识别
- python3实现的国密SM2+SM3
- python100道面试题及解答全部答案 pyc
- #python3.3关于Tk中的Treeview使用方法
- Python3.x+Pyqt5实现界面编程浏览网页
- 《机器学习实战》Python3代码
- Python3学习笔记
- Python3.7.2中文文档-标准库-通用操作系
- Python3.7.2中文文档-标准库-Python数据类
- python3基础教程第三版高清
- 随机森林python3实现代码(带数据集)
- dlib-19.18.0-cp37-cp37m-linux_armv7l.whl
- python3学习路线+思维导图
- Learn python3 the hard way
- 笨办法学python 3 第四版 英文
- python3爬虫
- Beginning Python: From Novice to Professional
- Python3实现KNN的三个包含数据集,水果
- python3中文帮助手册和英文帮助手册
- 基于协同过滤的电影推荐系统 python
- 廖雪峰Python3完整版PDF
评论
共有 条评论