资源简介

包括爬虫源码,即国内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

评论

共有 条评论