资源简介
包括爬虫源码,即国内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 版本
相关资源
- 爬虫爬到的火车站及火车经停站时刻
- 基于Hadoop平台实现一个分布式网络爬
- tensorflow中文文档.pdf
- webmagic_V0.7.3(修复https请求)
- Delphi网页爬取.rar
- 景点门票销售管理系统
- 网络爬虫的初次体验
- 知乎爬虫包括文章,评论
- 知乎爬虫代码
- 爬取微信公众号中的历史消息点赞量
- linux环境下的网络爬虫
- 采集软件 网页数据抓取的得力工具
- 去哪网旅游景点数据集合
- 新浪微博爬虫支持用户、超话、地点
- 极验陈博-智能反爬虫试炼之路.pdf
- scrapy官方手册中文 高清完整.pdf版
- 网络爬虫从入门到精通嗷嗷
- 精通Scrapy网络爬虫(完整版)274198
- 新华书店图书数据
- .Net网络爬虫
- 自己动手写网络爬虫完整版 源码
- 豆瓣电影数据集12万+用户影评40万+爬
- GatherPlatform数据抓取平台
- 《精通Scrapy网络爬虫》刘硕 pdf
- 景点介绍ListView控件应用
- tp5 利用QueryList + PhantomJS实现抓取淘宝
- TkComic_tencent_Demo.rar
- 火车头采集器破解版
- 仿 马蜂窝自由行 欢迎页
- 精通Scrapy网络爬虫完整版
评论
共有 条评论