Python-python为什么适合写抓取?

Python-python为什么适合写抓取?

浮生未歇 发布于 2017-03-23 字数 50 浏览 1149 回复 2

python为什么适合写抓取程序?怎么写抓取程序?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

晚风撩人 2017-05-07 2 楼

这个问题本身应该从两方面考虑:
1)抓取网页本身的接口
相比与其他静态编程语言,如java,C++,python抓取网页文档的接口更简洁;相比其他动态脚本语言,如perl,shell,python的urllib2包提供了较为完整的访问网页文档的API。(当然ruby也是很好的选择)
此外,抓取网页有时候需要模拟浏览器的行为,很多网站对于生硬的爬虫抓取都是封杀的。这是我们需要模拟user agent的行为构造合适的请求,譬如模拟用户登陆、模拟session/cookie的存储和设置。在python里都有非常优秀的第三方包帮你搞定,如Requestsmechanize

2)网页抓取后的处理
抓取的网页通常需要处理,比如过滤html标签,提取文本等。python的beautifulsoap提供了简洁的文档处理功能,能用极短的代码完成大部分文档的处理。

其实以上功能很多语言和工具都能做,但是用python能够干得最快,最干净。Life is short, u need python.

清晨说ぺ晚安 2017-04-24 1 楼

python抓取使用lxml库,lxml功能强大。速度也没什么顾虑,毕竟是cmodule lxml分析html是基于xpath,如果得到xpath?可以使用ff的插件。
简单的写个dome:

#!/usr/local/bin/python2.6
# -*- coding: gbk -*-

import urllib2
import threading
import lxml.html
from urlparse import urlparse

def get_urls():
import cStringIO, gzip
from urlparse import urljoin
url = "http://www.1616.net/"
html = urllib2.urlopen(url).read()
if html[:6] == 'x1fx8bx08x00x00x00':
html = gzip.GzipFile(fileobj = cStringIO.StringIO(html)).read()
dom = lxml.html.fromstring(html.decode('utf8'), base_url = url, parser = lxml.html.HTMLParser(remove_comments = True))
dom.rewrite_links(lambda l: urljoin(url, l))
bests = dom.xpath(".//div[@id='bests']//li/a")
cools = dom.xpath(".//div[@id='sites-r']//a[@href]")
return (bests, cools)

if __name__ == "__main__":
try:
bests, cools = get_urls()
print len(cools), len(bests)
except Exception, e:
pass

看起来是不是很简单容易呀,当然这里面我进行了简单的封装, 是基于我以前监控网站的程序进行修改的。 稍后我会在写一个相对容易理解的程序分享给各位pythoner初学者