python3.6 爬虫 上海所有教育机构地址,另外ac.txt为地区库(比如,静安寺为r812)

近期在做一个项目,所以自己学习了爬虫,开始爬上海教育机构地址。

代码如下:

# 注意,请修改cookie为你自己的cookie,否则点评网会封IP
# coding:utf-8
import urllib.request
import re
import os
import shutil # 高效处理文件的模块
import time
import random
from http import cookiejar
from http import cookies
from urllib import parse
#sys为system的缩写,引入此模块是为了改变默认编码
from imp import reload
from fake_useragent import UserAgent
import sys
reload(sys)#读取最大页数并写入r12\ad.txt,然后读取第一页面的店名和地址,并写入文件地区码/page_n.txt
def getfirstDocument(pg):page = str(pg+1)path_name = directory + '\\' + page + '.txt'#由于要搜索的关键词是中文,所以需要进行转码,这里调用了urllib.pathname2url函数real_url = targethead + ac  print(real_url)request = urllib.request.Request(real_url, headers = headers)                               #发送网络请求response = urllib.request.urlopen(request)                                                  #得到网络响应document = response.read().decode('utf-8')                                           #将网页源码用UTF-8解码items_name = re.findall(r'data-click-name="shop_title_click"\sdata-hippo-type="shop"\stitle="([^"]+)"\starget="_blank"\shref="', document, re.S)  #正则匹配出商家名items_address = re.findall(r'<span\sclass="addr">([^\s]+)</span>', document, re.S)   #正则匹配出地址result = ''#print(items_name)#print(items_address)for index in range(min(len(items_name),len(items_address))):#print(index)#print(items_name[index] + '  ' + items_address[index]+ '\n')result += items_name[index] + '  ' + items_address[index] + '\n'file = open(path_name, 'w+'); #创建文件file.write(result)                                                                   #将结果存入文件file.close()print ('Area_',ac,'page_',page,'Complete!')#先把第一页内容爬出来,然后把总页数爬出来。items_page =re.findall(r'data-ga-page="([^"]+)"', document, re.S)   items_page1=(list(map(int,items_page)))if items_page1==[]: pagemax=1else:pagemax = max(items_page1)print('最大页',pagemax)path_name2 = directory + '\\' + 'ad.txt'file2 = open(path_name2, 'w+',encoding='utf-8'); #创建文件pagemax1=str(pagemax)file2.write(pagemax1)                                                                   #将结果存入文件file2.close()return(pagemax) #读取第二页开始后面单一页面的店名和地址,并写入文件地区码/page_n.txt
def getDocument(pg):page = str(pg+1)path_name = directory + '\\' + page + '.txt'#由于要搜索的关键词是中文,所以需要进行转码,这里调用了urllib.pathname2url函数real_url = targethead + ac + 'p' + pageprint(real_url)request = urllib.request.Request(real_url, headers = headers)                               #发送网络请求response = urllib.request.urlopen(request)                                                  #得到网络响应document = response.read().decode('utf-8')                                           #将网页源码用UTF-8解码items_name = re.findall(r'data-click-name="shop_title_click"\sdata-hippo-type="shop"\stitle="([^"]+)"', document, re.S)  #正则匹配出商家名items_address = re.findall(r'<span\sclass="addr">([^\s]+)</span>', document, re.S)   #正则匹配出地址result = ''#print(items_name)#print(items_address)for index in range(min(len(items_name),len(items_address))):#print(index)#print(items_name[index] + '  ' + items_address[index]+ '\n')result += items_name[index] + '  ' + items_address[index] + '\n'file = open(path_name, 'w+',encoding='utf-8'); #创建文件file.write(result)                                                                   #将结果存入文件file.close()print ('Area_',ac,'page_',page,'Complete!')#根据传入directory创建同级目录,删除已经存在目录名
def createdic(directory):if os.path.exists(directory):shutil.rmtree(directory)os.makedirs(directory)  #删除后再创建对应的关键词目录print ('delete existed directory successfully')else:os.makedirs(directory)print ('create directory successfully')#根据传入页面htmlhandle搜索目录下页面最大个数
#def checkmaxpage(htmlhandle):
#    items_page = re.findall(r'data-ga-page="([^"]+)"', htmlhandle, re.S)   #正则匹配出区域
#    items_page1=(list(map(int,items_page)))
#    pagemax=max(items_page1)
#    return(pagemax)# 1.1 目标选择:登陆目标页面,目标页面教育已经转码
host = 'http://www.dianping.com'
targethead= 'http://www.dianping.com/search/keyword/1/0_%E6%95%99%E8%82%B2/'
#cookies = ""
# 1.2 登录准备:登陆目标页面,自定义UA头部,直接用即可,不用理解细节
user_All = ['Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.89 Safari/537.36',
]
user_agent = random.choice(user_All)
#user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.89 Safari/537.36'
headers = {'User-Agent':user_agent} #,'Cookie':cookies}
# 1.3 准备工作:读已经准备好的地区代码,txt文旦中/n回车为分割
f = open("ac.txt","r")
get = f.read()
areacode = get.split('\n')
print(areacode)# 2.1创建目录:赋值地区码给目录使用
directory = areacode  #Windows系统下,创建中文目录名前需要制定编码,这里统一用UTF-8
# 2.2创建目录: 先检查再创建所有编码区域的目录
m=0 #第几个二级地区code完成
k=0 #合计一共完成几个商铺抓取
for ac in areacode: if os.path.exists(ac): #创建还是使用已有目录m = m+1print ('\n','第',m,'个目录:',ac,'已存在')directory=acn=0 #第几个二级地区商铺完成if os.path.exists(directory + '\\' + 'ad.txt'): #之前读过最大页数adf = open(directory + '\\' + 'ad.txt','r')pagem = f.read()pagem1=int(pagem)for index in range(0, pagem1):index1=str(index+1)k=k+1if os.path.exists(directory + '\\' + index1 + '.txt'): #过滤掉已经读取过得page页面n=n+1else:getDocument(index)n=n+1time.sleep(10)else:pagem1=getfirstDocument(0)for index in range(1, pagem1):index1= str(index+1)k=k+1if os.path.exists(directory + '\\' + index1 + '.txt'):n=n+1else:getDocument(index)n=n+1time.sleep(10)                  else:createdic(ac)

python3.6 爬虫 上海所有教育机构地址相关推荐

  1. python多线程爬虫实例-Python3多线程爬虫实例讲解代码

    多线程概述 多线程使得程序内部可以分出多个线程来做多件事情,充分利用CPU空闲时间,提升处理效率.python提供了两个模块来实现多线程thread 和threading ,thread 有一些缺点, ...

  2. python多久能学会爬虫-上海多久可以学会python

    上海多久可以学会python 来源:教育联展网 编辑:粉色de皮卡丘 发布时间:2018-12-29 上海Python培训班 千锋教育打造人工智能Python工程师 快速咨询 上海Python培训 上 ...

  3. [Python3网络爬虫开发实战] 7-动态渲染页面爬取-4-使用Selenium爬取淘宝商品

    在前一章中,我们已经成功尝试分析Ajax来抓取相关数据,但是并不是所有页面都可以通过分析Ajax来完成抓取.比如,淘宝,它的整个页面数据确实也是通过Ajax获取的,但是这些Ajax接口参数比较复杂,可 ...

  4. 全员降薪 65% 五个月,核心高管不领工资:再明星的教育机构也没躲过去啊......

    点击上方"开发者技术前线",选择"星标" 18:50 在看 真爱  来自:AI前线  编辑:可可 受新冠肺炎疫情影响,很多线下教育机构无法开班授课,营收受到巨大 ...

  5. 上海python培训比较好的机构-上海Python培训机构推荐

    原标题:上海Python培训机构推荐 Python是一门简单又不简约的语言.阅读好的Python程序感觉就像阅读英语,尽管是非常严格的英语.Python的这种伪代码特性是其强项之一,它可让你专注于解决 ...

  6. 上海python培训比较好的机构-想要入行Python,上海Python培训机构哪个好?

    随着大数据和人工智能技术的落地应用,Python的应用范围得到进一步拓展,IT行业陆续释放出大量的Python开发岗位.有人想要入行Python,却又担心学习Python就业不好,那么一个高薪高职的P ...

  7. python3爬虫入门教程-总算懂得python3.4爬虫入门教程

    Python是一款功能强大的脚本语言,具有丰富和强大的库,重要的是,它还具有很强的可读性,易用易学,非常适合编程初学者入门.以下是小编为你整理的python3.4爬虫入门教程 环境配置:下载Pytho ...

  8. python3 爬虫实例_【实战练习】Python3网络爬虫快速入门实战解析(上)

    原标题:[实战练习]Python3网络爬虫快速入门实战解析(上) 摘要 使用python3学习网络爬虫,快速入门静态网站爬取和动态网站爬取 [ 前言 ] 强烈建议:请在电脑的陪同下,阅读本文.本文以实 ...

  9. 织梦响应式教育机构官网网站模板

    介绍: 名称:响应式教育机构模板 本套织梦模板采用织梦内核开发的模板,这款模板使用范围广,不仅仅局限于一类型的企业,早教教育.教育培训机构类的网站都可以用该模板.你只需要把图片和文章内容换成你的即可, ...

最新文章

  1. Python爬虫与一汽项目【三】爬取中国五矿集团采购平台
  2. 发票打印不全不完整的解决方案(Win10)
  3. 复现经典:《统计学习方法》​第 11 章 条件随机场
  4. java内存问题怎么排查,java占内存高排查 java应用占用内存过高排查的解决方案...
  5. 小米回应将放弃“MI”字logo:不存在停止使用
  6. LeetCode 1980. 找出不同的二进制字符串
  7. Django第一天笔记
  8. 翻牌游戏如何打乱牌面java_如何游戏4Bet底池?
  9. mybatis如何处理参数
  10. 硬盘格式化后数据能不能恢复,硬盘格式化数据怎么恢复
  11. QXDM工具使用说明
  12. Struts2教程之一基本使用
  13. 微信打开网址提示在浏览器中打开的办法
  14. 如何让大脑更强大?打造最强大脑的5个关键要素
  15. 【Python自学笔记】学习Python控制键盘鼠标的库 pyautogui
  16. 135编辑器如何插入文件
  17. pyqtgraph文档笔记(五)总结:几个类的理解( GraphicsView, GraphicsItem ,GraphicsObject, PlotWidget等)
  18. echarts关系图/力导向动态图(地图经纬度定位)
  19. 星舟科技终止A股上市辅导,曾在新三板挂牌交易
  20. Python兼职真的太赚钱了,刚开工的我,就用Python兼职赚了3000

热门文章

  1. 12V5A 12V6A反激开关电源、氮化镓方案 OB2269 M5576 CR6842启辰微方案 方案包括原理图,PCB,变压器规格书
  2. 图形/多段线内缩外扩思路
  3. 科学计算机保存快捷键,计算器快捷键
  4. 三星I9300救砖教程详解
  5. 产品读书《魔鬼经济学2:拥有清晰思维的艺术》
  6. upc 胖虎的序列(规律)
  7. 【Spring】【MyBatis】Spring整合MyBatis01
  8. 数逻实验七段数码管相关要点
  9. python中range倒序输出
  10. Ajax 是什么? 如何创建一个Ajax?