现在的位置: 主页 > 公司荣誉 > 文章正文

python cralwer (爬虫)心得

作者:福州市名人视觉形象设计职业培训学校 来源:www.mrssjy.com 发布时间:2017-09-04 14:27:33
python cralwer (爬虫)心得

最近用python做了个小crawler, 可以自动整理一些网站的内容,推送到当地文件中,做个小小的总结。

主要lib就是urllib 和 beautifulsoup.

urllib和urllib2是很方便的网页提取库,核心就是发送各种自定义的url request,然后可以返回网页内容。 最简单的函数,判定一个网页是否存在:

def isUrlExists(url): req = urllib2.Request(url, headers=headers) try: urllib2.urlopen(req) except: return 0; return 1;
headers可以自定义,也可以留空。自定义的主要目的是模仿成一般浏览器的header,绕过一些网站对crawler的封锁。

如果想获得网站内容,并且获取返回异常的内容,可以这样:

def fetchLink(url): req = urllib2.Request(url, headers=headers) try: response = urllib2.urlopen(req) except urllib2.URLError, e: print 'Got Url Error while retrieving: ', url, ' and the exception is: ', e.reason except urllib2.HTTPError, e: print 'Got Http Error while retrieving: ', url, ' with reponse code: ', e.getcode(), ' and exception: ', e.reason else: htmlContent = response.read() return htmlContent

以上代码直接返回html。

BeautifulSoup (documentaion: http://www.crummy.com/software/BeautifulSoup/bs4/doc/ )是一个简洁的html分析工具库。获得了html后,可以直接用python自带的正则表达式来获得想要的信息, 但是略显繁琐。Beautifulshop直接将html 用类似json的方法分析好,形成标准的树状结构,可以直接进行获取元素的操作。另外,还支持元素的搜索等等。

content = bs4.BeautifulSoup(content,from_encoding='GB18030') posts = content.find_all(class_='post-content') for post in posts: postText = post.find(class_='entry-title').get_text()
这个例子中content先被转化为bs4对象,采集软件,然后找到所有class=post-content的区块,再获得其中class=entry-title的文字。注意,第一行中parse的时候可以选择encoding,这里是用的是简体中文。

以上都是html text内容的获取。如果其中有图片,以上代码会直接生成图片连接到原来的图片位置。 如果需要进行任何下载,可以使用urlretrieve方法。这里就不多说了。

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:仙桃网站制作 http://xiantao.666rj.com

上一篇:新手如何做网站优化 下一篇:最后一页