资源简介
包括爬虫源码,即国内10W景点概览信息和部分景点详细信息。
- 爬取热门目的地信息 `MafengwoCrawler()._get_mdd()`
- 爬取目的地内景点信息 `MafengwoCrawler().crawler_mdd()`
- 爬取景点详细信息 `MafengwoCrawler().crawler_detail()`

代码片段和文件信息
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/04/24
# @Author : AIsland
# @Email : yuchunyu97@gmail.com
# @File : crawler.py
# @Description : 爬取马蜂窝各省市景点数据
import requests
import re
import time
import json
import hashlib
import logging
import threading
import pymysql
from bs4 import BeautifulSoup
class MafengwoCrawler:
# 查询目的地的网址
# 目的地内包含景点
URL_MDD = ‘http://www.mafengwo.cn/mdd/‘
# 查询景点的网址
# 包含景点详情的链接、景点图片和景点名称
URL_ROUTE = ‘http://www.mafengwo.cn/ajax/router.php‘
# 查询景点坐标经纬度的网址
# 经度:longitude lng
# 纬度:lat itude lat
URL_POI = ‘http://pagelet.mafengwo.cn/poi/pagelet/poiLocationApi‘
# 通用 Headers
HEADERS = {
‘Referer‘: ‘http://www.mafengwo.cn/‘
‘Upgrade-Insecure-Requests‘: ‘1‘
‘User-Agent‘: ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML like Gecko) Chrome/73.0.3683.103 Safari/537.36‘
}
# mysql 数据库链接信息
DB_HOST = ‘localhost‘
DB_USER = ‘root‘
DB_PASSWORD = ‘yuchunyu97@gmail.com‘
DB_NAME = ‘mafengwo‘
# 请求数据加密需要的字符串,由 _get_md5_encrypted_string() 方法获取
encrypted_string = ‘‘
# 记录不用爬取的页码,即爬取成功的页码
success_pages = []
def __init__(self log_file=None):
# 使用说明 https://www.cnblogs.com/nancyzhu/p/8551506.html
logging.basicConfig(level=logging.DEBUG
filename=‘mafengwo.‘+str(int(time.time()))+‘.log‘
format=‘%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s‘
)
# 初始化请求对象
self.REQ = requests.session()
# 设置通用 Headers
self.REQ.headers.update(self.HEADERS)
# 获取请求数据加密需要的字符串
self._get_md5_encrypted_string()
# 如果传入日志文件,则过滤已爬取成功的页码
if log_file is not None:
self.success_pages = self._read_log_file_get_success_page(log_file)
print(‘当前已经成功爬取的页数:‘ + str(len(self.success_pages)))
print(‘5秒后继续运行‘)
time.sleep(5)
def crawler_mdd(self mdd_id=21536):
‘‘‘
爬取单个目的地的景点信息
默认:21536,中国
‘‘‘
# mdd_id = 12522 # 鼓浪屿,16页,测试数据
# 开始爬数据
start = int(time.time())
# 先获取数据总页数
res = self._get_route(mdd_id)
page_total = res[‘pagecount‘]
# 计算每个线程爬取多少页
page_range = round(page_total/20)
if page_range == 0:
page_range = 1
logging.info(‘总共‘+str(page_total)+‘页,每个线程爬取‘+str(page_range)+‘页‘)
print(‘总共‘+str(page_total)+‘页,每个线程爬取‘+str(page_range)+‘页‘)
# 开启多线程模式
thread = []
for i in range(1 page_total+1 page_range):
page_start = i
page_end = i + page_range
if page_end > page_total + 1:
page_end = page_total + 1
t = threading.Thread(target=self.crawler
args=(mdd_id page_start page_end))
thread.append(t)
f
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-04-30 11:16 mafengwo\
文件 6148 2019-04-30 11:15 mafengwo\.DS_Store
目录 0 2019-04-30 11:19 __MACOSX\
目录 0 2019-04-30 11:19 __MACOSX\mafengwo\
文件 120 2019-04-30 11:15 __MACOSX\mafengwo\._.DS_Store
文件 20128702 2019-04-30 11:13 mafengwo\mafengwo.20190430.sql
文件 261 2019-04-30 11:13 __MACOSX\mafengwo\._mafengwo.20190430.sql
文件 0 2019-04-24 08:37 mafengwo\README.md
文件 176 2019-04-24 08:37 __MACOSX\mafengwo\._README.md
文件 1666 2019-04-30 11:16 mafengwo\mafengwo.structure.sql
文件 261 2019-04-30 11:16 __MACOSX\mafengwo\._mafengwo.structure.sql
目录 0 2019-04-24 14:37 mafengwo\.vscode\
文件 21902 2019-04-30 11:15 mafengwo\crawler.py
文件 176 2019-04-30 11:15 __MACOSX\mafengwo\._crawler.py
- 上一篇:virtools素材
- 下一篇:kubernetes 进阶实战 epub 版本
相关资源
- 很好用的网站前端页面爬取工具
- 爬取豆瓣电影TOP250程序,包含非常详
- Web Scraper 爬虫 网页抓取 Chrome插件
- 爬取新浪微博上的妹纸照片的爬虫程
- 中国行政区划到村总.txt
- Lucene(搜索)Demo
- 机械主题爬虫的设计与实现
- 模拟登录一些常见的网站
- NBA数据爬虫
- Chrome插件-XPath Helper 完成Bing每日壁纸
- 读秀包库全文器.zip
- 微博图片爬虫exe
- 网络爬虫的设计与实现-毕业设计毕业
- 天气数据爬虫与可视化分析
- 百度图片搜索-爬虫批量高清大图
- 网络爬虫--用来提取网页内容和URL的程
- 基于.net开发的网络爬虫
- Jsoup网络爬虫
- TeleportUltra中文破解版
- 网页爬虫 非常实用工具
- 2018电影票房分析numpypandasmatplotlib
- 关于爬虫如何做js逆向的思路
- 某景点门票销售管理系统
- 分布式爬虫
- 自动爬取百度谷歌图片
- 马蜂窝游记数据
- 在路上是一款旅游型的APP
- 基于社交网络的情绪化分析
- 智联招聘爬虫
- 爬虫+分词+Word2vec向量化的实现.zip
评论
共有 条评论