1 # coding=utf-8
  2 import xlrd
  3 import xlwt
  4 import requests
  5 import re
  6 import json
  7 import os
  8 import sys
  9 reload(sys)
 10 sys.setdefaultencoding('utf8')
 11 from xlutils.copy import copy
 12
 13
 14 data = xlrd.open_workbook(u'经济情况 - 副本.xlsx')
 15 table=data.sheets()[0]
 16 nrows = table.nrows
 17 ncols = table.ncols
 18 print nrows,ncols
 19
 20 print  '--'.join(table.row_values(1))
 21 errortxt=open(u'错误城市.txt','a')
 22
 23
 24 class WriteExcel(object):
 25     def __init__(self,filename):
 26         self.file=filename
 27     def write2excel(self,row, col, strx):
 28         rb = xlrd.open_workbook(self.file)#, formatting_info=True)
 29         wb = copy(rb)
 30         ws = wb.get_sheet(0)
 31         ws.write(row, col, unicode(strx))
 32         wb.save(self.file)
 33
 34 class Crawlcity(WriteExcel):
 35     def __init__(self,cityname):
 36         super(Crawlcity,self).__init__(u'经济情况 - 副本.xlsx')
 37         self.cityname=cityname
 38         print '爬取%s的百科信息'%cityname
 39
 40     def myserch(self,fieldx,content):
 41         matchx=re.search('%s</dt>\s*?<dd class="basicInfo-item value">\s*?(.*?)\s*?</dd>'%fieldx, content)
 42         if matchx:
 43             #print '%s的原始匹配是:%s' % (fieldx,matchx.group(1))
 44             matchx_str=re.sub('<sup.*','',matchx.group(1))
 45             return   re.sub('<.*?>|<.*?>','',matchx_str)
 46         else:
 47             print '###########没找到%s的%s字段的匹配'%(self.cityname,fieldx)
 48             return '--'
 49
 50     def get_baike_city(self,citynamex=None):
 51         if not citynamex:
 52             url='https://baike.baidu.com/item/%s'%self.cityname
 53         else:
 54             url='https://baike.baidu.com/item/%s'%citynamex
 55         print '%s的百科链接是%s'%(self.cityname,url)
 56         resp=requests.get(url)
 57         #print resp.content
 58         if 'https://baike.baidu.com/item' not in  resp.url:
 59             print '%s跳转到错误链接%s'%(self.cityname,resp.url)
 60             return self.get_baike_city(citynamex=self.cityname.replace('市',''))
 61             # errortxt.write('%s    %s'%(self.cityname,url))
 62             # return
 63
 64
 65         belong_area = self.myserch('所属地区',resp.content)
 66         governs_area = self.myserch('下辖地区',resp.content)
 67         region_type = self.myserch('行政区类别',resp.content)
 68         area = self.myserch('面&nbsp;&nbsp;&nbsp;&nbsp;积',resp.content)
 69         population = self.myserch('人&nbsp;&nbsp;&nbsp;&nbsp;口',resp.content)
 70         plata_code = self.myserch('车牌代码',resp.content)
 71         gdp = self.myserch('地区生产总值',resp.content)
 72         avarage_gdp = self.myserch('人均生产总值',resp.content)
 73         per_capita_income = self.myserch('人均支配收入',resp.content)
 74
 75         print '%s\n的所属地区是:%s\n下辖地区是:%s\n行政区类别是:%s\n面积是:%s\n人口是:%s\n车牌代码是:%s\n地区生产总值是:%s\n人均生产总值是:%s\n人均支配收入是:%s\n'%(self.cityname,belong_area,governs_area,
 76                 region_type,area,population,plata_code,gdp,avarage_gdp,per_capita_income)
 77         print '*'*100
 78
 79         for n in range(1,nrows):
 80             if self.cityname==table.row_values(n)[0]:
 81                 self.write2excel(n,2,belong_area)
 82                 self.write2excel(n, 3, governs_area)
 83                 self.write2excel(n, 4, region_type)
 84                 self.write2excel(n, 5, area)
 85                 self.write2excel(n, 6, population)
 86                 self.write2excel(n, 7, plata_code)
 87                 self.write2excel(n, 8, gdp)
 88                 self.write2excel(n, 9, avarage_gdp)
 89                 self.write2excel(n, 10, per_capita_income)
 90                 self.write2excel(n, 11, url)
 91                 break
 92
 93
 94 if __name__=="__main__":
 95     for n in range(1,nrows):
 96         cityname = table.row_values(n)[0]
 97         if table.row_values(n)[2]!='':
 98             pass
 99             print 'excel已记录了,跳过%s这个城市城市'%cityname
100         else:
101             Crawlcity(cityname).get_baike_city()

百度百科的规律是https://baike.baidu.com/item/xxxx

例如要爬取黄冈市的信息,就用https://baike.baidu.com/item/黄冈市,然后请求会自动重定向到该词条。注意结尾不要加一个/,否则会是一个错误的页面。

从excel读取要爬的城市,然后爬取城市信息,把数据插入到excel中。

爬取百度百科上中国所有城市的信息相关推荐

  1. python爬取百度百科获取中国高校信息

    公众号看到的文章,感觉不错,适合练手.所以就自己做了一遍. 废话不多说开整. 目的:手头有一份<学校名称.xlsx>的表格.想要这些学校的英文名称.描述.简称 学校名称.xlsx 最终成果 ...

  2. 用python 爬取百度百科内容-爬虫实战(一) 用Python爬取百度百科

    最近博主遇到这样一个需求:当用户输入一个词语时,返回这个词语的解释 我的第一个想法是做一个数据库,把常用的词语和词语的解释放到数据库里面,当用户查询时直接读取数据库结果 但是自己又没有心思做这样一个数 ...

  3. python 百度百科 爬虫_爬虫爬取百度百科数据

    以前段时间<青春有你2>为例,我们使用Python来爬取百度百科中<青春有你2>所有参赛选手的信息. 什么是爬虫? 为了获取大量的互联网数据,我们自然想到使用爬虫代替我们完成这 ...

  4. 学习开源web知识图谱项目,爬取百度百科中文页面

    github上找到的项目,感觉比较适合知识图谱入门 源码地址:https://github.com/lixiang0/WEB_KG ubuntu环境(如果在windows下跑改下文件路径,我改了一下还 ...

  5. Python爬虫:运用多线程、IP代理模块爬取百度图片上小姐姐的图片

    Python爬虫:运用多线程.IP代理模块爬取百度图片上小姐姐的图片 1.爬取输入类型的图片数量(用于给用户提示) 使用过百度图片的读者会发现,在搜索栏上输入关键词之后,会显示出搜索的结果,小编想大多 ...

  6. 实战爬取百度百科1000多个页面,发现惊天大密,你们猜猜看

    推荐一下我建的python学习交流qun:850973621,群里有免费的视频教程,开发工具. 电子书籍.项目源码分享.一起交流学习,一起进步! 爬虫最简单的架构就三个方面: 1.URL管理器:主要负 ...

  7. python 爬取百度知道,Python 爬虫爬取百度百科网站

    利用python写一个爬虫,爬取百度百科的某一个词条下面的全部链接和每一个链接内部的词条主题和摘要.利用request库爬取页面,然后利用BeautifulSoup对爬取到的页面提取url和关键内容. ...

  8. Python爬取百度百科,BeautifulSoup提取关键信息

    本文主要爬取演员杨幂的百度百科,用到的python库有:requests和BeautifulSoup 主要内容共分为以下两个方面: 1. 用requests爬取网页内容 2. 用BeautifulSo ...

  9. python爬取百度百科表格_第一个python爬虫(python3爬取百度百科1000个页面)

    以下内容参考自:http://www.imooc.com/learn/563 一.爬虫简介 爬虫:一段自动抓取互联网信息的程序 爬虫可以从一个url出发,访问其所关联的所有的url.并从每个url指向 ...

最新文章

  1. VS 2010 Beta2中WPF与Silverlight的关键区别?
  2. python函数作用域与闭包_python基础-08-内置函数、作用域、闭包、递归
  3. mysql mha配置idrac远程关机_iDRAC远程管理功能试用_戴尔 PowerEdge R810(Xeon E7520/16GB/3*146GB)_服务器评测与技术-中关村在线...
  4. 解决金蝶未检测到K/3许可文件,并且该账套已超过演示版期限问题
  5. Scala 基础(7)—— 函数字面量和一等函数
  6. 自己动手编译android ffmpeg
  7. 虚幻4皮肤材质_虚幻4果真被玩坏了?浅谈光影与材质带来的极致体验
  8. oracle按月统计按季度统计,Oracle数据库按月统计(候,旬,月,季,年)
  9. 乱码问题及字符编码集(一)
  10. Z字型变幻,整数反转
  11. 小程序快速生成朋友圈海报分享图
  12. Task 1 知识图谱介绍
  13. BUUCTF:异性相吸
  14. C语言——逆序乘积式
  15. 2023美赛ABCDEF题思路
  16. 基于计算机技术的媒体分析
  17. php个人支付宝对账,PHP实现个人支付宝支付开发(一) - 免签支付接口
  18. 计算机毕业后的打算英语作文,我未来的计划,毕业后的计划My Future Plan
  19. office2010 启动man_图解微软办公Office 2010八项新功能
  20. 最新河北省普通民办高校名单

热门文章

  1. ZooKeeper场景实践:(6)集群监控和Master选举
  2. MySQL Cluster(MySQL 集群) 初试(转)
  3. .NET零基础入门06:面向对象入门
  4. JAVA[Algorithm]--戴克斯特拉
  5. 英特尔支持员工自带设备办公
  6. gSOAP 在windows下的安装与使用(mingw32)
  7. 一文读懂 CNN、DNN、RNN 内部网络结构区别
  8. zabbix web前端取值同后端取值不一致
  9. 在线文档预览方案-office web apps
  10. bzoj 1601 最小生成树