Python爬虫练习一:爬取 2016年统计用区划代码和城乡划分代码

    目标网址:http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/index.html

    爬取所有市级的统计用区划代码和区级、县级的url(即目标网页第二层链接的内容全部爬取),区级、县级及以下的区划代码没有爬取。

    网站构造比较简单,容易爬取成功。

import requests
from bs4 import BeautifulSoup
aimurl="http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/index.html"#爬虫目标网址

#输入网址 获得网页的soup
def getsoup(url):
   res=requests.get(url) #以get方法访问目标网址获取网页信息
   res.encoding= 'gb2312'#该网页是以gb2312的编码形式显示的
   soup=BeautifulSoup(res.text, 'html.parser')#使用美丽汤解析网页内容
   return soup

#输入一级soup 获得二层网址和省、直辖市的名称 以list存储
def getsecondhtml(soup):
    secondhtml = []  # 存放二级网址
    province = []#存放省、直辖市的名称
    for provincetr in soup.select('.provincetr a'):#观察目标网页构造发现想要获取的内容在class provincetr的 a 下
        secondhtml.append("http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/" + provincetr['href'])
        province.append(provincetr.text)
    return secondhtml,province

#输入list形式网址,以list获得网址的soup
def getlistsoup(listhtml):
    listsoup = []
    for html in listhtml:
        listsoup.append(getsoup(html))
    return listsoup

#输入二层列表soup,输出二层统计用区划代码和名称,和第三层的url
def gettext2(listsoup2th):
    text = []
    url = []
    for soup2 in soup2th:
        temptext = []
        tempurl = []#重复一次 因为统计用区划代码与名称都有链接且是相同的 所以要去除一个
        ttempurl = []
        for temp in soup2.select('.citytr a'):
            temptext.append(temp.text)
            tempurl.append("http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/"+temp['href'])
        text.append(temptext)
        ttempurl=tempurl[0:-1:2]#去除一个
        url.append(ttempurl)
    return text,url


firstsoup = getsoup(aimurl)#获得首页的soup
(secondhtml,province)=getsecondhtml(firstsoup)#获得第二层市级的html和省直辖市名称
soup2th=getlistsoup(secondhtml)#获得第二层市级统计用区划代码的soup
(text2,url3)=gettext2(soup2th)#获得第二层市级统计用区划代码与名称和第三层的url

结果展示代码(初学python 写的很烂):

for i,j,p in zip(province,text2,url3):
    print(i)
    n=0
    flag=0
    for k in j:
        flag=flag+1
        print(k,end='   ')
        if flag==2:
            flag=0
            print(p[n])
            n=n+1
    print()

输出结果:

北京市
110100000000   市辖区   http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/11/1101.html


天津市
120100000000   市辖区   http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/12/1201.html


河北省
130100000000   石家庄市   http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/13/1301.html
130200000000   唐山市   http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/13/1302.html
130300000000   秦皇岛市   http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/13/1303.html
130400000000   邯郸市   http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/13/1304.html
130500000000   邢台市   http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/13/1305.html
130600000000   保定市   http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/13/1306.html
130700000000   张家口市   http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/13/1307.html
130800000000   承德市   http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/13/1308.html
130900000000   沧州市   http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/13/1309.html
131000000000   廊坊市   http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/13/1310.html
131100000000   衡水市   http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/13/1311.html
139000000000   省直辖县级行政区划   http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/13/1390.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很好的问题!以下是一些 Python 爬虫开源项目,可以用来爬取多种网站,包括微信、淘宝、豆瓣、知乎、微博等。 1. Scrapy:一个高效的Python爬虫框架,可用于从多个网站获取数据。 2. Beautiful Soup:一个用于解析HTML和XML文档的Python库,可用于爬取网站。 3. Selenium:一个自动化测试工具,也可用于模拟用户行为进行网站爬取。 4. Requests:一个Python HTTP库,可用于向网站发送请求并获取响应。 5. PyQuery:一个用于解析HTML文档的Python库,类似于jQuery。 6. Pyspider:一个强大的爬虫框架,可用于爬取多个网站。 7. Crawlera:一个智能代理池,可用于绕过网站的反爬虫机制。 8. Frontera:一个高效的分布式爬虫框架,可用于爬取大规模数据。 9. Newspaper:一个Python库,可用于从新闻网站中提取文章和元数据。 10. Feedparser:一个Python库,可用于解析RSS和Atom新闻源。 11. Grab:一个Python爬虫框架,可用于爬取多个网站。 12. ParseHub:一个基于云端的数据提取工具,可用于从网站中提取结构化数据。 13. Webbot:一个用于模拟用户行为的Python库,可用于爬取网站。 14. PySpider:一个基于分布式架构的Python爬虫框架,可用于爬取多个网站。 15. Grablib:一个Python爬虫框架,可用于爬取多个网站。 16. Python-Goose:一个Python库,可用于从新闻网站中提取文章和元数据。 17. Scrapy-redis:一个基于Redis的分布式爬虫框架,可用于爬取多个网站。 18. Scrapy-splash:一个基于Splash的JavaScript渲染爬虫框架,可用于爬取JavaScript动态生成的网页。 19. Scrapy-UserAgents:一个Scrapy中的中间件,可用于随机更换用户代理。 20. Scrapy-Proxies:一个Scrapy中的中间件,可用于随机更换代理IP。 21. Scrapy-rotating-proxies:一个Scrapy中的中间件,可用于随机更换代理IP。 22. Scrapy-selenium:一个Scrapy中的中间件,可用于使用Selenium进行网站爬取。 23. Scrapy-fake-useragent:一个Scrapy中的中间件,可用于随机更换用户代理。 希望这些开源项目能够帮助你进行网站爬取

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值