游记标题、用户、日期、阅读数量、评论数量

上一篇: Python爬取马蜂窝各城市游记总数.爬取了马蜂窝所有城市的游记总数,本文爬取具体城市的游记详情

import os
import time
import randomimport pymysql
import requests
from lxml import etree
import pandas as pd
from sqlalchemy import create_enginedef page(url):# ua伪装headers = {'user-agent': '浏览器的user-agent'}response = requests.get(url=url, headers=headers)page_text = response.textreturn page_textdef notes_detail(city_id):note_id = 1# 新建空dataframe用来存放爬到的数据note_detail_dataframe = pd.DataFrame([], columns=['id', 'title', 'user_name', 'date', 'read_number', 'decision'])url = 'http://www.mafengwo.cn/yj/%s/'url_1 = format(url % city_id)url_2 = url_1 + 's-0-0-%s'for i in range(1, 5):url_3 = format(url_2 % str(i))# 第一页url_4 = url_3 + '-0-1-0.html'page_text = page(url_4)tree = etree.HTML(page_text)# 页数page_number = int(tree.xpath('//div[@class="_pagebar"]/div/span[1]/span[1]/text()')[0])for num in range(1, page_number + 1):url_5 = url_3 + '-0-%s-0.html'url_6 = format(url_5 % str(num))page_ = page(url_6)tree_ = etree.HTML(page_)li_list = tree_.xpath('//div[@class="_notelist"]/div/ul/li')for li in li_list:try:title = li.xpath('.//a[@class="title-link"]/text()')[0]user_name = li.xpath('./div[3]/span/a[2]/text()')[0]date_ = li.xpath('./div[3]/span[2]/span/text()')[0]date = "20" + date_read_number = li.xpath('./span/text()[1]')[0]decision = li.xpath('./span/text()[2]')[0]except Exception as e:print(e)breaknote_detail_dataframe.loc[note_id - 1, 'id'] = note_idnote_detail_dataframe.loc[note_id - 1, 'title'] = titlenote_detail_dataframe.loc[note_id - 1, 'user_name'] = user_namenote_detail_dataframe.loc[note_id - 1, 'date'] = datenote_detail_dataframe.loc[note_id - 1, 'read_number'] = read_numbernote_detail_dataframe.loc[note_id - 1, 'decision'] = decisionnote_id += 1print(note_id, title, user_name, date, read_number, decision)# 随机生成0.2-1秒的一位小数random_sleep_time = float(round(random.uniform(0.2, 1.0), 1))# 休眠随机数秒time.sleep(random_sleep_time)# 只爬前三页if num == 3:break# 随机生成0.2-1秒的一位小数random_sleep_time = float(round(random.uniform(0.2, 1.0), 1))# 休眠随机数秒time.sleep(random_sleep_time)if city_id == '10065':check_csv("beijing")note_detail_dataframe.set_index('id', inplace=True)note_detail_dataframe.to_csv('./CSV/beijing.csv')elif city_id == '10099':check_csv("shanghai")note_detail_dataframe.set_index('id', inplace=True)note_detail_dataframe.to_csv('./CSV/shanghai.csv')elif city_id == '10208':check_csv("chongqing")note_detail_dataframe.set_index('id', inplace=True)note_detail_dataframe.to_csv('./CSV/chongqing.csv')else:check_csv("tianjin")note_detail_dataframe.set_index('id', inplace=True)note_detail_dataframe.to_csv('./CSV/tianjin.csv')# 检查csv文件是否存在
def check_csv(csv_name):path = './CSV'file = path + '/' + csv_name + '.csv'if not os.path.exists(path):os.makedirs(path)if not os.path.exists(file):# os.mknod(file)f = open(file, 'w')f.close()def beijing_detail():city_id_list = ['10065', '10099', '10208', '10320']city_id = city_id_list[0]notes_detail(city_id)def shanghai_detail():city_id = '10099'notes_detail(city_id)def chongqing_detail():city_id = '10208'notes_detail(city_id)def tianjin_detail():city_id = '10320'notes_detail(city_id)if __name__ == '__main__':beijing_detail()shanghai_detail()chongqing_detail()tianjin_detail()

本文的爬虫,只爬取每个城市的5个类别的前3页,将# 只爬前三页 if num == 3: break删除即可爬取全部内容

Python爬取马蜂窝城市游记相关推荐

  1. Python爬取马蜂窝各城市游记总数

    Python爬取马蜂窝各城市游记总数 完整代码在最下方 马蜂窝的省和直辖市都有一个对应的编号,编写程序获取编号 第一步创建一个Spider的类,headers为一个字典,user-agent从浏览器中 ...

  2. 使用Python爬取马蜂窝网站的游记和照片

    使用Python爬取马蜂窝网站的游记和照片 特殊原因需要在马蜂窝上爬取一些游记和照片作为后续分析处理的数据,参考网上一些类似的爬虫文章,自己尝试了一下,这次爬取的是马蜂窝上所有有关苏州的游记(包括游记 ...

  3. python爬取某城市各监测站点历史空气质量数据

    python爬取某城市各监测站点历史空气质量数据 引言 正文 一.安装Web driver 二.安装selenium 三.数据爬取 引言 由于要使用某地各监测站点的空气质量数据做数据预测,因此需要去网 ...

  4. Python爬取马蜂窝-推荐小众城市旅游及爬取某一城市的景点信息和游记信息

    目的: 推荐小众城市旅游及爬取某一城市的景点信息和游记信息. 第一部分 首先从目的地页面获得各省专属5位数字编号,之后进入各省城市列表获得热门城市专属5位数字编号. 1.获得直辖市编号和热门省编号,h ...

  5. 使用python爬取马蜂窝游记

    马蜂窝( http://www.mafengwo.cn/ )是著名的游记分享网站.本例从中爬取2018年"南京"地区游记. 观察游记列表,发现以时间顺序url以类似"ht ...

  6. Python爬取旅游城市,五一大家最爱去哪玩?

    今年五一放了四天假,很多人不再只是选择周边游,因为时间充裕,选择了稍微远一点的景区,甚至出国游.各个景点成了人山人海,拥挤的人群,甚至去卫生间都要排队半天,那一刻我突然有点理解灭霸的行为了. 今天,通 ...

  7. Python 爬取国家统计局城市信息2019

    写个页面需要有省市区三级联动,缺少最新的城市信息,从网上找了些资源,发现写的各有特色,有的资源里面的语法奇葩到无语,灼瞎我的眼呀,无奈自己就简写了一个脚本,发现统计局的规律还是挺奇特的,开始用xpat ...

  8. Python 爬取马蜂窝

    马蜂窝采集 注意:马蜂窝的数据不管评价数量多少,最终采集到的最多75条(网页上也只显示这么多),如下图所示: import requests import time import re import ...

  9. Python爬取热门城市火车票信息

    使用程序获取火车票信息,解放双手,减少负担,快速抢票,出行更轻松(-v-) 首先打开12306火车票查询页面 http://www.12306.com/#/train/index 接下来随便搜索两个城 ...

最新文章

  1. python3.7安装turtle步骤-Python3 turtle安装和使用教程
  2. 怎么调节电机启动值_发电机组的几个使用规范技巧
  3. Spring Cloud @RefreshScope 原理是什么?
  4. ucore-lab1-练习6report
  5. 笔记本电脑怎样连接打印机_佳能无线便携打印机上市
  6. jboss mysql cluster_jboss配置mysql数据库连接池
  7. java中的泛型(E)
  8. python变量类型声明_python变量声明及简单数据类型
  9. xampp 中mysql中文乱码
  10. 用JavaScript语言制作简易版轮播图
  11. Python 分析 10 万条弹幕告诉你:《古董局中局2》到底好不好看?
  12. matlab实验十ask,matlab实验十ASK调制与解调实验
  13. 简支梁挠度计算公式推导_挠度公式推导与计算
  14. 为什么文本框里的字只显示一半_Word文本框文字显示不全、无法选择、不能编辑调整大小和跨页,怎么解决...
  15. wiondows如何更新pip版本
  16. 如何在云服务器上部署web项目(CVM)
  17. lingo输出解的解释
  18. LeetCode数据结构与算法学习Day03
  19. evo使用方法及参数介绍
  20. gulp plugins 插件介绍

热门文章

  1. 浅谈SAP FICO—总账科目
  2. 【Linux4.1.12源码分析】协议栈gro收包之TCP处理
  3. DROID-SLAM: Deep Visual SLAM for Monocular, Stereo, and RGB-D Cameras论文阅读笔记
  4. omnet、sumo、veins环境搭建笔记
  5. 矩阵合同,相似与等价 以及初等变换矩阵
  6. 计算机基础与office应用考试专题,一级考试计算机基础及WPS Office应用模拟题
  7. mmo中匹配机制的思考与实现
  8. 概率论 思维导图复习提纲
  9. 源码免杀教程 源码免杀思路详解
  10. 灾难等级排列 那些尴尬的智能家居设备