python爬取全国各级行政区域

中国现行的行政区划实行如下:
一级省级行政区:包括省、自治区、直辖市、特别行政区。
二级地级行政区:包括地级市、地区、自治州、盟。
三级县级行政区:包括市辖区、县级市、县、自治县、旗、自治旗、特区、林区。
四级乡级行政区:包括街道、镇、乡、民族乡、苏木、民族苏木、县辖区。

通过该网站可以简单的爬取到全国的四级行政区域名称

from bs4 import BeautifulSoup
from urllib.request import urlopen,urlparse,urlsplit,Request
import urllib.request
import re
import codecs
import random

#
ua_list = [
    "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36",#Chrome
    "Mozilla/5.0 (Windows NT 6.1; rv:40.0) Gecko/20100101 Firefox/40.0",#firwfox
    "Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko",#IE
    "Opera/9.99 (Windows NT 5.1; U; zh-CN) Presto/9.9.9",#Opera
]
base_url = 'http://www.tcmap.com.cn/'
citys = []
distrcts = []
streets = []

def getStrongItem(p):
    # print(base_url + p)
    ua = random.choice(ua_list)
    req = urllib.request.Request( base_url + p, headers={'User-agent' : ua} )    
    html=urlopen(req).read()    
    soup = BeautifulSoup ( html, 'html.parser',from_encoding="gb18030" )    
    href_limit = re.compile(".*<a class=\"blue\" href=\".*</a>.*")
    # print(re.match(href_limit, "<a class=\"blue\" href=\"/zhejiangsheng/linan.html\">临安区</ a>"))    
    page=soup.find_all('table')    
    # print(page)
    items = []    
    item_htmls = []   
    for p in page:        
        lines = p.find_all('strong')        
        for line in lines:            
            # print(line)            
            if  (re.match(href_limit,str(line))) is not None:               
                item_html = str(line).split('"')[3]                
                item =  str(line).split('>')[-3].split('<')[0]                
                # print(item,item_html)
                items.append(item)
                item_htmls.append(item_html)
    return items,item_htmls
                # break
def getAll():
    provinces = {'zhejiangsheng':'浙江省'}#,'jiangxi':'江西省','xinjiang':'新疆维吾尔自治区','gansusheng':'甘肃省','neimenggu':'内蒙古自治区'
    #,'heilongjiang':'黑龙江省','jilin':'吉林省','liaoning':'辽宁省','hebei':'河北省','shandong':'山东省','shanxisheng':'山西省'
    #,'henan':'河南省','jiangsu':'江苏省','anhui':'安徽省'
    p_map = {}
    for p in provinces:
        # print(provinces[p])
        citys,city_htmls = getStrongItem(p)
        c_map= {}
        for city,city_html in zip(citys,city_htmls):    
            distrcts,distrct_htmls = getStrongItem(city_html)
            d_map = {}
            for distrct,distrct_html in zip(distrcts,distrct_htmls):
                streets,street_htmls = getStrongItem(distrct_html)
                d_map[distrct] = streets
            c_map[city] = d_map
        p_map[provinces[p]] = c_map     
    return p_map

if __name__ == '__main__':
    getAll()
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要使用Python爬取全国蔬菜价格,需要以下步骤: 1. 安装Python并配置好开发环境。可以从Python官方网站下载Python安装程序,并按照指引完成安装。同时,可以选择一个合适的集成开发环境(如PyCharm)或者使用文本编辑器。 2. 导入必要的库。在Python中,可以使用第三方库如requests、beautifulsoup和pandas来实现爬取和处理数据的功能。可以使用pip命令安装所需的库,比如:pip install requests beautifulsoup4 pandas。 3. 发送HTTP请求获取网页内容。通过requests库发送HTTP请求,并获取网页内容。可以使用requests.get(url)方法,并将所需的URL作为参数传递给该方法。 4. 解析网页内容。使用beautifulsoup库来解析爬取到的网页内容。该库提供了很多方法来处理HTML和XML的标记语言,可以根据需要来选择合适的方法。 5. 提取蔬菜价格数据。通过分析网页的结构和标签,可以使用beautifulsoup提供的方法来提取所需的蔬菜价格数据。可以使用find_all()方法或者选择相应的CSS选择器来提取标签内的文本。 6. 存储数据。将提取到的蔬菜价格数据存储到合适的数据结构中,比如一个列表或者一个数据框。可以使用pandas库来处理和存储数据。 7. 数据分析和可视化。使用pandas库提供的功能对数据进行分析和处理,比如计算平均价格、最高价格和最低价格等。可以使用matplotlib库或者seaborn库来进行数据可视化,以便更好地理解和展示蔬菜价格数据。 8. 通过循环迭代获取所有蔬菜价格。使用循环迭代的方法,爬取多个页面或者不同地区的蔬菜价格数据,以实现全国范围内的数据爬取。 需要注意的是,在进行爬取过程时,需遵守网站的反爬虫规则,不要频繁发送请求,以免给对方服务器带来过大负荷或被屏蔽。 ### 回答2: Python可以通过网络爬虫技术来获取全国蔬菜价格信息。 首先,我们需要了解网页的结构和蔬菜价格信息所在的位置。通过分析目标网站的HTML源代码,找到包含价格信息的元素和标签。 接下来,我们可以使用Python的requests库发送HTTP请求,获取网页的HTML源代码。使用BeautifulSoup库可以对HTML进行解析,从而提取出蔬菜价格信息所在的元素和标签。 在获取到价格信息的元素后,可以使用Python的字符串处理方法将其提取出来并进行整理和存储。可以将数据保存为CSV、Excel或数据库等格式,以便后续分析和使用。 同时,注意爬取数据的合法性和道德性。在爬取数据前,应该了解目标网站的爬取规则,并尊重网站的反爬措施。合法爬虫应该限制访问频率,不破坏网站的正常运行和数据完整性。 另外,为了保证爬虫的稳定性和持久性,可以使用定时任务或者监控机制,定期更新和跟踪价格数据。 总结起来,通过使用Python的网络爬虫技术,我们可以便捷地获取全国蔬菜价格数据,并进行后续分析和应用。但在进行数据爬取时,我们需要遵守相关法律法规和网站规定,并保持道德地爬取数据,以免对网站的正常运行造成干扰。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值