资讯专栏INFORMATION COLUMN

Python利用正则抓取网页内容保存到本地

cyrils / 1752人阅读

摘要:注意一点,到屏幕上时,需要将中文字符解码为才能打印,写入文件是不需要的。

目标是收集国内银行的域名列表,于是在人行的网站上找到了汇总信息,网址是http://www.cbrc.gov.cn/chinese/jrjg/index.html
截图是

查看一下他的html源码,需要抓取部分的是:

  • 中国工商银行
  • 中国农业银行
  • 提炼一下,我们需要提取的是Url和银行的名称,那么可以先把源码中的t删除,然后用正则表达式匹配

    
    (.*)
    

    分析完毕,下面是代码实现了,第一个版本如下:

    #!/usr/bin/env python
    # -*- encoding: utf-8 -*-
    import os,re
    import mechanize
    
    browser = mechanize.Browser()
    browser.addheaders = [("User-agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1")]
    res  = browser.open("http://www.cbrc.gov.cn/chinese/jrjg/index.html")
    data = res.read()
    data = data.replace("	","")
    regx = "
    (.*)
    "
    domainlist =  re.findall(regx,data)
    print len(domainlist)
    for domain in domainlist:
        print domain[1].decode("utf-8"), domain[0] 
    
    with open(u"金融.txt","wb") as fp:
        str1 = ""
        for domain in domainlist:
                str1 += domain[1]+ "----" + domain[0] + "----"+ "
    "
        fp.write(str1)
    

    首先声明一个浏览器对象,并修改了其http头的user-agent信息;然后打开Url,获取Html源码,并将"t"删除;之后利用Python的正则匹配,将Url和银行名称提炼出来;最后将这些信息写入到文件中。
    注意一点,print到屏幕上时,需要将中文字符解码为utf-8才能打印,写入文件是不需要的。

    那么升级一下,我需要的不是url,而是银行对应的域名,可以用tld模块来提取
    import部分添加

    from tld import get_tld

    在使用tld模块从url提取域名的过程中,会发现莫名其妙的问题,不知道是提取正则提取Url时,url不规范导致的还是其他原因,总有一些Url没法提取域名,于是会发生报错信息,我这边从新写了一下,增加容错性

    def my_get_tld(url):
        try:
            str = get_tld(url = url,fail_silently=True)
            if str == None:
                return ""
            else:
                return str.encode("utf8")
        except:
            return ""

    于是写入文本的代码修改成

    with open(u"金融.txt","wb") as fp:
        str1 = ""
        for domain in domainlist:
                str1 += domain[1]+ "----" + domain[0] + "----" + my_get_tld(url = domain[0]) + "
    "
        fp.write(str1)

    OK,运行之后就可以得到需要的内容了

    文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

    转载请注明本文地址:https://www.ucloud.cn/yun/38015.html

    相关文章

    • python爬虫抓取纯静态网站及其资源

      摘要:下面跟大家详细分享一下写爬虫抓取静态网站的全过程。而我们上面说的元字符都代表一定的规则和占据一定的字符。 遇到的需求 前段时间需要快速做个静态展示页面,要求是响应式和较美观。由于时间较短,自己动手写的话也有点麻烦,所以就打算上网找现成的。 中途找到了几个页面发现不错,然后就开始思考怎么把页面给下载下来。 由于之前还没有了解过爬虫,自然也就没有想到可以用爬虫来抓取网页内容。所以我采取的办...

      daydream 评论0 收藏0
    • 小白看过来 让Python爬虫成为你的好帮手

      摘要:小白看过来让爬虫成为你的好帮手随着信息化社会的到来,人们对网络爬虫这个词已经不再陌生。互动活动关于华为云微认证的任何问题,均可在下方评论区留言。华为云微认证每期将送出个免费机会,奖项公布时间月日。 小白看过来 让Python爬虫成为你的好帮手 随着信息化社会的到来,人们对网络爬虫这个词已经不再陌生。但什么是爬虫,如何利用爬虫为自己服务,这听起来有些高大上。下面一文带你走近爬虫世界,让即...

      darcrand 评论0 收藏0
    • 爬虫 - 收藏集 - 掘金

      摘要:在这之前,还是有必要对一些概念超轻量级反爬虫方案后端掘金前言爬虫和反爬虫日益成为每家公司的标配系统。 爬虫修炼之道——从网页中提取结构化数据并保存(以爬取糗百文本板块所有糗事为例) - 后端 - 掘金欢迎大家关注我的专题:爬虫修炼之道 上篇 爬虫修炼之道——编写一个爬取多页面的网络爬虫主要讲解了如何使用python编写一个可以下载多页面的爬虫,如何将相对URL转为绝对URL,如何限速,...

      1fe1se 评论0 收藏0
    • Python3网络爬虫实战---17、爬虫基本原理

      摘要:在前面我们讲到了和的概念,我们向网站的服务器发送一个,返回的的便是网页源代码。渲染页面有时候我们在用或抓取网页时,得到的源代码实际和浏览器中看到的是不一样的。所以使用基本请求库得到的结果源代码可能跟浏览器中的页面源代码不太一样。 上一篇文章:Python3网络爬虫实战---16、Web网页基础下一篇文章:Python3网络爬虫实战---18、Session和Cookies 爬虫,即网...

      hellowoody 评论0 收藏0
    • Python爬虫实战(2):爬取京东商品列表

      摘要:,源代码爬取京东商品列表,以手机商品列表为例示例网址版本京东手机列表源代码下载位置请看文章末尾的源。,抓取结果运行上面的代码,就会爬取京东手机品类页面的所有手机型号价格等信息,并保存到本地文件京东手机列表中。 showImg(https://segmentfault.com/img/bVxXHW); 1,引言 在上一篇《python爬虫实战:爬取Drupal论坛帖子列表》,爬取了一个用...

      shevy 评论0 收藏0

    发表评论

    0条评论

    最新活动
    阅读需要支付1元查看
    <