`
m4774411wang
  • 浏览: 111854 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论

python urllib2查询数据

 
阅读更多

最近为了更好的查询老王python的外链,所以准备写一个python urllib2 查询脚本来查询,一般查询外链比较准确的工具还是yahoo的外链工具,但是有点不方便的就是,yahoo查出的外链要一页一页的翻,好累而且不好方便统计,我是想把网站的外链全部读取到文件里,这样比较好在本地来进行统计。
废话不说,上脚本吧。

#encoding=utf-8
#@author:老王python
#@description:检查网站的外链

import urllib
from sgmllib import SGMLParser
import re
import sys

infolist = {}#结果列表

class LinkParser(SGMLParser):
    '''抓取link列表的信息'''
    def reset(self):
        SGMLParser.reset(self)
        self.url = ''#链接文本
        self.li_check = 0
        self.a_check = 0
        self.jt_url = ''#具体url
        self.infolist = {}


    def start_li(self, tag):
        '''检测li开头'''
        if tag:
            if tag[0][1] == 'sco5li0' or tag[0][1] == 'sco5li1':
                    self.li_check = 1

    def start_a(self,tag):
        '''检测a开头'''
        if self.li_check == 1:
            if not tag[0][1].startswith('http://203.209.253.250'):
                host_re  = re.compile(r'^https?://(.*?)($|/)',
                    re.IGNORECASE
                )               
                self.url = host_re.search(tag[0][1]).group(1)
                self.jt_url = tag[0][1]
                self.a_check = 1


    def handle_data(self, text):
        '''处理空白文本'''
        txt = text.strip()

        if txt and self.a_check and txt != '快照':
            checkurl = '%s,%s' % (self.url,self.jt_url)
            self.infolist[checkurl] = txt
           
        if txt == '':
            return
       
    def end_li(self):
        self.li_check = 0
       
    def end_a(self):
        self.a_check = 0


numre = re.compile(r'<strong>.+')#匹配总的记录数
pnum = re.compile(r'\d+')

checkurl = ''#查询网站的地址,比如http://www.xxx.com
checkurl = urllib.quote(checkurl)#请求地址

pageurl = 'http://sitemap.cn.yahoo.com/search?bwm=i&bwmo=d&p=%s' % (checkurl)
content = urllib.urlopen(pageurl).read()
c = numre.search(content).group(0)
totalnum =  int(pnum.search(c).group(0))#总的外链数


host_re  = re.compile(r'^http://(?P<host>www\.(?:[A-Z0-9-]+\.){1}[A-Z\.]{2,6})$',
    re.IGNORECASE
)

pagesize = 50#一页显示50条

if totalnum % pagesize:
    page = totalnum/pagesize
else:
    page = (totalnum/pagesize)+1


f = file('a.txt','w')

for k in xrange(page):
    parser = LinkParser()
    url = 'http://sitemap.cn.yahoo.com/search?bwm=i&bwmo=d&p=%s&b=%s' % (checkurl,k*50)
    print 'url=========>',url
    cstr = urllib.urlopen(url).read()
    parser.feed(cstr)
    parser.close()
   
    for m in parser.infolist:
        domain,jt_url = m.split(',')
        print 'domain--------->',domain
        print 'jt_url--------->',jt_url
        t =  'url:%s,jt_url:%s,title:%s\n' % (domain,jt_url,parser.infolist[m].decode('utf-8').encode('utf-8'))
        f.write(t)
f.close()

原创文章请注明转载自老王python,本文地址:http://www.cnpythoner.com/post/121.html

作者:老王@python python 教程
老王python,提供python相关的python 书籍,python 主机,django 教程和python 下载,希望大家能够喜欢!

分享到:
评论

相关推荐

    Python urllib urllib2 urllib模块安装说明

    根据提供的标题、描述、标签及部分内容,我们可以了解到这篇文章主要涉及Python中的urllib模块以及与之相关的urllib2模块的安装过程。尽管标题中提到了urllib模块,但是内容部分却展示了requests库的安装过程。因此...

    python urllib3

    Python的urllib3库是Python标准库urllib的第三方扩展,提供了一套强大的HTTP客户端功能。这个库在处理网络请求时,特别是在并发请求和管理连接池方面,具有很高的效率和灵活性。下面我们将深入探讨urllib3的核心概念...

    Python urllib urllib模块

    4. **urllib2** (仅在Python 2.x中): 在Python 2.x中,urllib2模块提供了一个更高级的接口,包含了request、error和一些其他功能,比如处理HTTP基本认证、代理等。但在Python 3.x中,这些功能被整合到urllib.request...

    python urllib3 requests

    Python的urllib3和requests库是进行HTTP请求的两个常用工具,它们在Web开发、数据抓取、API交互等场景中扮演着重要角色。这里我们将深入探讨这两个库的特点、使用方法以及它们之间的区别。 首先,urllib3是Python的...

    python urllib2详解及实例 Python开发技术文章_教程 - 红黑联盟.pdf

    ### Python的urllib2库详解及实例 #### 引言 `urllib2`是Python标准库中的一个强大工具,用于处理URLs的获取和解析。尽管在Python 3中已被`urllib.request`和`urllib.parse`等模块取代,但在Python 2中,`urllib2`...

    pythonurllib2模块实例简介.pdf

    总的来说,Python的urllib2模块提供了一种强大且灵活的方式来处理URL,包括发送HTTP请求、处理响应、编码和解码数据,以及处理多种网络协议。它在教育中扮演着重要角色,因为它是学习网络编程和Web开发的基础工具。...

    python urllib2模块实例简介.docx

    ### Python urllib2 模块详解 #### 一、引言 `urllib2` 是 Python 早期用于处理 URL 请求的标准库之一,在 Python 2.x 版本中广泛使用。随着 Python 3.x 的普及,该模块已被整合进 `urllib` 包中,并有所调整。...

    pythonurllib2模块实例简介文.pdf

    总结起来,Python的urllib2模块提供了一套全面的工具,用于处理各种URL相关的任务,包括HTTP请求、响应处理、数据传输、认证、代理和cookie管理。通过灵活地组合不同的处理器和 opener,开发者可以构建出复杂的网络...

    Python爬虫基础之Urllib库

    Python 爬虫基础之 Urllib 库 Python 的 Urllib 库是 Python 语言中最基本的网络请求库,提供了对 URL 的访问和处理能力。该库包含了多种功能,包括访问 URL、设置 headers、代理设置、超时时间设置等。 1. 访问 ...

    Python urllib2运行过程原理解析

    Python的urllib2库是进行HTTP请求的重要工具,主要用于网络数据的抓取和交互。它提供了urlopen函数和Request类,使得开发者能够方便地发送GET和POST请求,并处理各种网络交互中的复杂情况。 1. `urlopen`函数是...

    Python 网络爬虫开发 Python爬虫入门基础教程:Python的urllib2 模块解析 共6页.pptx

    Python 网络爬虫开发基础教程:Python 的 urllib2 模块解析 Python 网络爬虫开发是指使用 Python 语言来开发网络爬虫程序,以便从互联网上抓取有价值的数据。Python 的 urllib2 模块是 Python 的一个标准库,提供了...

    Python爬虫基础教程-Urllib详解.pdf

    Python的Urllib库是进行网络数据获取的重要工具,尤其在编写爬虫程序时。它集成了多种处理URL的模块,方便开发者对网络资源进行高效、便捷的访问。在Python3中,Urllib库整合了Python2.7中的urllib和urllib2,形成一...

    pythonurllib模块下载图片共9页.pdf.z

    在这个特定的场景中,我们看到标题提到的是"pythonurllib模块下载图片共9页.pdf.z",这暗示了一个使用`urllib`下载图片的教程或指南,可能是一个PDF文档,共9页,被压缩为了一个`.zip`文件。虽然无法直接提供压缩...

    「Python系列」Python urllib库(操作网页URL对网页的内容进行抓取处理).md

    ### Python urllib 库详解 #### 一、引言 `urllib` 是 Python 的一个标准库,主要用于处理 URL 操作,比如抓取网页内容、解析 URL 和处理异常情况等。对于从事 Web 开发或者需要从互联网上抓取数据的开发者来说,`...

    python使用urllib2提交http post请求的方法

    然而,需要注意的是,自Python 3.5起,`urllib2`已被`urllib.request`模块取代。但在Python 2.x版本中,`urllib2`仍然是主要的接口。 下面详细解释如何使用`urllib2`来发送HTTP POST请求: 1. **导入所需模块**: ...

    phython urllib2 api

    知识点:Python的urllib2模块详解 一、引言与概述 urllib2是Python中的一个强大模块,专门用于从互联网上抓取URL资源。它不仅提供了基础的URL获取功能,还支持处理复杂的网络请求场景,如基本认证、代理设置、错误...

Global site tag (gtag.js) - Google Analytics