`
yuhai.china
  • 浏览: 161694 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

设计python版的爬虫

阅读更多


准备工作
安装Python2.5

安装easy_install,pycurl,lxml;建议使用firefox浏览器,可以方便的使用各
种调试插件。

基本知识
需要了解python中unicode的原理,以便掌握GBK和UTF-8的转换方法.

假设content是GBK编码,在python中,转换成UTF-8的方法如下:

Content=Content.decode(‘gbk’).encode(‘utf-8’)


3  专业技能

需要熟练掌握xpath,强烈推荐在信息抽取时使用xpath,这是一种基于文档结构
的方法。优于使用正则表达式。正则表达式是一种字符串匹配的方法,难于维
护。经常用到的xpath很少,比如抽取页面里的全部链接 “//a” 就好了,可以
用它把程序写的很优雅,易于维护。Lxml是python实现的高效的xml解析工具,易
于使用,示例如下:

建立DOM : dom=lxml.html.document_fromstring(content)
得到符合XPATH的元素列表:alist=dom.xpath(“//a[@id=’123’]”)
对这些元素做处理:
For a in alist:
   Do something

   需要指出的是,传入lxml.html.document_fromstring的content最好是
unicode的, 因此可以先做一个变换content=content.decode(‘encoding’)。

   和服务器交互,推荐使用pycurl,这个部分已经封装好了,只要使用就可以
了。

def get_curl(user_agent="MSIE"):
    "initialize curl handle"
    dev_null = _StringIO.StringIO()
    curl_handle = pycurl.Curl()
    curl_handle.setopt(pycurl.FOLLOWLOCATION, 1)
    curl_handle.setopt(pycurl.MAXREDIRS, 5)
    curl_handle.setopt(pycurl.CONNECTTIMEOUT, connection_timeout)
    curl_handle.setopt(pycurl.TIMEOUT, timeout)
    curl_handle.setopt(pycurl.NOSIGNAL, 1)
    curl_handle.setopt(pycurl.LOW_SPEED_LIMIT, 100)
    curl_handle.setopt(pycurl.LOW_SPEED_TIME, low_speed_time)
    curl_handle.setopt(pycurl.HTTPHEADER, ["User-Agent: %s" %
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)",
accept_type])
    curl_handle.setopt(pycurl.MAXFILESIZE, max_size)
    curl_handle.setopt(pycurl.COOKIEFILE, 'cookies.txt')
    curl_handle.setopt(pycurl.COOKIEJAR, 'cookies.txt')
    curl_handle.setopt(pycurl.WRITEFUNCTION, dev_null.write)
   
    return curl_handle


def curl_fetch(curl_handle, url):
   
    fp = _StringIO.StringIO()
    curl_handle.setopt(pycurl.URL, url)
    curl_handle.setopt(pycurl.WRITEFUNCTION, fp.write)
   
    # perform the transfer
    try:
        curl_handle.perform()
    except pycurl.error, e:
        print e
        return (-1,0,0)
    content_type = curl_handle.getinfo(pycurl.CONTENT_TYPE)
    return (curl_handle.getinfo(pycurl.HTTP_CODE),fp.getvalue(),
content_type)
0
0
分享到:
评论

相关推荐

    山东建筑大学计算机网络课程设计《基于Python的网络爬虫设计》.docx

    在本课程设计中,基于Python的网络爬虫设计旨在让学生掌握网络爬虫的基本原理、实现方法以及在实际中的应用。通过该项目,学生能够学习到如何利用Python语言和相关库进行网页抓取、数据解析,并对抓取的数据进行有效...

    Python网络爬虫技术 完整教案.docx

    通过对Python爬虫技术的学习,不仅可以帮助我们更好地理解和利用互联网资源,还能为后续的数据分析、挖掘等工作奠定坚实的基础。同时,需要注意遵守相关的法律法规和技术规范,合理合法地使用爬虫技术,为社会创造更...

    基于Python的网络爬虫的毕业设计

    【标题】"基于Python的网络爬虫的毕业设计"涵盖了几个关键知识点,这些知识点对于理解和构建网络爬虫至关重要。首先,我们关注的是Python这一编程语言,它是网络爬虫开发的首选语言,因为其语法简洁、库丰富且适合...

    解析Python网络爬虫:核心技术、Scrapy框架、分布式爬虫全套教学资料

    本套教学资料深入解析了Python爬虫的核心技术、Scrapy框架以及分布式爬虫的实现,旨在帮助学习者掌握这一领域的核心技能。 一、Python爬虫核心技术 Python语言因其简洁明了的语法和丰富的第三方库而成为网络爬虫...

    基于python网络爬虫的小说网数据采集分析与可视化项目源码(课程设计).zip

    基于python网络爬虫的小说网数据采集分析与可视化项目源码(课程设计).zip已获导师指导并通过的97分的高分大作业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 基于python...

    Python网络爬虫技术-教学大纲.pdf

    - 掌握Python爬虫环境的搭建,学习常见的Python爬虫库。 - 学习爬虫伦理和法规,了解如何遵守网络爬虫的行为规范。 2. **网页前端基础**(3学时) - 网络编程基础,理解Socket库,包括TCP和UDP通信。 - 学习...

    《Python网络爬虫》实验报告六.docx

    Python 网络爬虫实验报告六 Python 网络爬虫实验报告六是关于使用 Python 语言进行网络爬虫的实验报告,主要内容包括抓取学习强国下学习金句的内容,并保存音频资源至本地。下面是实验报告的详细内容: 一、上机...

    毕业设计-python网络爬虫二手房源数据采集及可视化分析-带源码+PPT文档.zip

    毕业设计—python网络爬虫二手房源数据采集及可视化分析—带源码+PPT文档.zip毕业设计—python网络爬虫二手房源数据采集及可视化分析—带源码+PPT文档.zip毕业设计—python网络爬虫二手房源数据采集及可视化分析—带...

    Python3爬虫课程资料代码(34课).rar

    4. **Scrapy分布式原理**:Scrapy是一个高效的Python爬虫框架,它内置了分布式爬取功能。Scrapy使用Scrapy-Redis作为中间件,通过消息队列实现爬虫任务的分发,提高爬取效率,应对大规模网站的数据抓取。 5. **...

    《零基础:21天搞定Python分布爬虫》课件

    在IT领域,Python爬虫是一项重要的技能,尤其对于数据挖掘和数据分析从业者来说更是不可或缺。《零基础:21天搞定Python分布爬虫》这个课程针对初学者,旨在通过21天的学习,帮助大家掌握Python爬虫的基础知识以及...

    完整版Python网络爬虫之Scrapy爬虫框架使用案例教程含源代码共18页.pdf

    Scratch,是抓取的意思,这个Python的爬虫框架叫Scrapy,大概也是这个意思吧,就叫它:小刮刮吧。 小刮刮是一个为遍历爬行网站、分解获取数据而设计的应用程序框架,它可以应用在广泛领域:数据挖掘、信息处理和或者...

    基于Python和HTML的《Python网络爬虫与信息提取》嵩天老师课程学习笔记设计源码

    该项目为嵩天老师在中国大学MOOC上开设的《Python网络爬虫与信息提取》课程的学习笔记设计源码,采用Python和HTML编程语言编写,共包含22个文件,其中17个为Python源代码文件,1个Git忽略文件,1个LICENSE文件,1个...

    python专利爬虫下载

    1. **Python爬虫**:Python是一种流行的编程语言,因其简洁的语法和丰富的库支持,在数据抓取方面非常受欢迎。常见的Python爬虫库包括requests(用于发送HTTP请求)、BeautifulSoup(解析HTML和XML文档)以及Scrapy...

    基于Python网络爬虫毕业论文.doc

    ### 基于Python网络爬虫毕业论文的关键知识点解析 #### 一、网络爬虫概述 网络爬虫(Web Crawler),又称网络蜘蛛或网络机器人,是一种按照一定规则自动抓取互联网上的信息的程序或者脚本。在大数据时代背景下,...

    基于Python的网络爬虫的毕业设计实现

    【Python网络爬虫毕业设计实现】是针对计算机科学与技术专业学生的一项常见课题,它旨在让学生掌握网络数据抓取的基本技能,并能应用到实际项目中。在这个设计中,Python作为主要的开发语言,因其简洁易读的语法和...

    Python网络爬虫实习报告总结归纳.docx

    3. Portia框架:面向非程序员,采用可视化方式设计爬虫,操作简单,适合初学者和快速原型开发。 4. newspaper框架:专注于新闻和文章的抓取与分析,提供文章内容提取、元信息解析等功能。 5. Python-goose框架:专门...

    Python网络爬虫的设计与实现.zip

    此外,Python爬虫在实际应用中还需关注版权法规,尊重网站的Robots协议,并避免对目标服务器造成过大的压力。在开发过程中,应注重代码的可读性和可维护性,合理使用面向对象编程和模块化设计。 总的来说,Python...

    基于Python网络爬虫项目&爬虫技术文档(包含多套爬虫项目&项目教程&技术文档&源代码&论文等)

    5)用python爬虫抓站的一些技巧总结 6)patyon爬虫技术PDF课件&Python网络爬虫入门知识 7)《Python网络爬虫权威指南第2版》源代码 8)Python爬虫开发与项目实战+源代码 9)Python爬虫多个开源项目操作步骤代码

    Python网络爬虫实战

    根据提供的信息,《Python网络爬虫实战》是一本适合初学者使用的Python爬虫技术书籍,它不仅能够帮助读者巩固基础知识,还能够作为一本实用工具书在实际工作中发挥作用。下面将详细介绍该书中可能涵盖的关键知识点。...

    毕业设计-基于python网络爬虫的二手房源数据采集及可视化分析设计与实现

    总的来说,这个毕业设计项目覆盖了Python爬虫开发的全貌,从数据采集到数据分析再到结果展示,每个环节都锻炼了开发者的技术能力和问题解决能力。通过实践,不仅可以提升Python编程技能,还能增强对网络数据的理解和...

Global site tag (gtag.js) - Google Analytics