Python静态页面爬虫


爬虫技术随着网络的普及和广泛应用,也得到了极大的发展,互联网上有着无数的网页,如何从海量页面中快速的获取信息,是需要思考和解决的问题,这也促使了网络爬虫技术的发展,从一个页面到另一个页面,从一个站点到另一个站点,就像蜘蛛织网一样,因此网络爬虫也形象的称之为网络蜘蛛,也叫网络机器人。

理论上讲,任何支持网络通讯的语言都可以用来做爬虫,写爬虫与编程语言的关联性不大,但总有相对顺手,便捷的语言,Python无疑是其中的一种,其广泛地应用于爬虫编写,也诞生了很多优秀的爬虫框架,如Scrapy, PySpider, Crawley, Portia, Beautiful Soup, Grab等等,熟练地使用这些框架可以帮助人们快速的开发爬虫应用,有关这些框架的使用和技术介绍,网上有大量的文献,在这里不作讨论。今天我要给大家介绍的是通过另一种方式快速简便的实现爬虫应用 - 正则表达式。这种方式在应对静态HTML页面时特别有效,下面通过一个实例来简单介绍下,希望能起到举一反三的作用。

正则表达式在python爬虫中的应用

url = "https://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&ie=gb18030&word=%C3%C0%C9%D9%B8%BE&fr=ala&ala=1&alatpl=cover&pos=0&hs=2&xthttps=111111"
# url = "http://www.360doc.com/content/17/0203/19/12472239_626276344.shtml"
# url = "http://www.360doc.com/userhome/12472239"
# url = "http://www.360doc.com/content/18/0708/00/12472239_768657823.shtml"

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# driver = webdriver.Ie()
# driver.get("www.baidu.com")
# driver.find_element_by_id("kw").send_keys(u"美少妇")
# driver.find_element_by_id("su").send_keys(Keys.ENTER)


import urllib, requests
# getURL = urllib.urlopen(url)
# html = getURL.read() # 有时现实的html中文是乱码,下面的写法能正确显示html文档

req = requests.get(url)
# html = req.text
html = req.content
# print html

import re
# reg = r'data-imgurl="(.+?\.jpg)" />'
# reg = r'src="(.+?\.jpg)" pic_ext'
reg = r'src="(.+?\.jpg)"\s/>'
pattern = re.compile(reg)
imglist = re.findall(pattern, html)
print "how many pictures found - ", len(imglist)

x = 1
savePictureFolder = "C:\Users\Luck_Lello\Desktop\SavePythonSpiderPictures"

for i in imglist:
    print i
    urllib.urlretrieve(i, savePictureFolder + "\\%s.jpg"%(x))
    x += 1

以上内容是根据html内容来抓取图片的,对于一些静态页面html比较有效,对shtml没多大用处。但此时也可以先模拟js行为,然后在抓取页面内容进行类似处理。

这个例子告诉我们,做事情有时不能太拘泥于形式和框架,经验固然重要,但还是要具体问题具体分析,解决问题最有效的方式有时就是最不麻烦的方式,测试尤其如此。

一篇不错的参考文档 -
盗张图~~~


Author: Alan_Yuan
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source Alan_Yuan !
 Previous
Python在Ajax中的应用 Python在Ajax中的应用
Ajax技术在网站中的应用随处可见,python要提取网页中的内容,就需要模拟动态的网页加载,对于动态页面信息的爬取,一般分为两种情况,一种是直接从JavaScript中采集加载的数据、需要自己去手动分析Ajax请求来进行信息的采集,另一种
Next 
Python 测试报告研究 Python 测试报告研究
HTMLTestRunner 是Python的一个标准库,是unittest单元测试的一个框架扩展,顾名思义可以用它来生成漂亮的单元测试报告,千万别小看测试报告,赏心悦目的报告能给测试增色不少,一起来看看HTMLTestRunner是如何工
  TOC