博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小试python爬虫程序
阅读量:5216 次
发布时间:2019-06-14

本文共 3775 字,大约阅读时间需要 12 分钟。

什么都不说了,先上代码,代码里面有很详细的解释,

参考地址为:

这个代码并未使用BeautifulSoup

很快我们将使用BeautifulSoup

1 #coding:utf8 2 import urllib2 3 import re 4 url = "http://www.baidu.com/s?wd=steve+jobs"            # 百度搜索关键字steve jobs 5 content = urllib2.urlopen(url).read() 6 # 将URL的源码存在content变量中,其类型为字符形 7 urls_pat = re.compile(r'(.*?)') 8 # 上面括号里面是要去的的内容,(.*?)是指标签中所有的东西 9 # re.compile是将字符串编译为用于python正则式的模式,10 # 字符前的r表示是纯字符,这样就不需要对元字符进行两次转义11 siteUrls = re.findall(urls_pat , content)12 #############################################13 for (i,v) in enumerate(siteUrls):               # i是数组siteUrls的索引,v是siteUrls的值14     print v15 #############################################16 # 上下两种方法都能遍历输出结果,原因是siteUrls 是数组类型17 #for i in range(0,len(siteUrls)):18 #    print siteUrls[i]

运行结果为:

alex@universe ~/python/OOP $ python spider.py   www.apple.com/stevejobs/ 2013-3-13    cn.engadget.com/tag/SteveJobs/ 2013-3-13    book.douban.com/subject/65121... 2013-3-13  wenku.baidu.com/view/dd72f7eeb8f67c1... 2012-7-10   www.forbes.com/profile/steve...jobs/ 2013-3-24    www.yeeyan.org/articles/view/Alexhon... 2013-3-13    www.ifanr.com/6619 2013-3-13    www.businessinsider.com/blackboard/s... 2013-3-13

这说明这样用了urllib2, re 模块后,我们抓取到一定的数据

 

 

下面我们用BeautifulSoup做一下

其下载地址:

The current release of Beautiful Soup 3 is  (February 16, 2012). You can install Beautiful Soup 3 with pip install BeautifulSoup or easy_install BeautifulSoup. It's also available as python-beautifulsoup in Debian and Ubuntu, and as python-BeautifulSoup on Red Hat.

我用的是linuxmint,是ubuntu分支的,所以可以这样安装。sudo easy_install BeautifulSoup

alex@universe ~/python/OOP $ sudo easy_install BeautifulSoup[sudo] password for alex: Searching for BeautifulSoupBest match: BeautifulSoup 3.2.0Adding BeautifulSoup 3.2.0 to easy-install.pth fileUsing /usr/lib/python2.7/dist-packagesProcessing dependencies for BeautifulSoupFinished processing dependencies for BeautifulSoup
1 #coding:utf8 2 import urllib2 3 from BeautifulSoup import BeautifulSoup 4 url = "http://www.baidu.com/s?wd=steve+jobs"            # 百度搜索关键字steve jobs 5 content = urllib2.urlopen(url).read() 6 # 将URL的源码存在content变量中,其类型为字符形 7 soup = BeautifulSoup(content) 8 siteUrls = soup.findAll('span',attrs = {
'class':'g'}) 9 ############################################10 for (i,v) in enumerate(siteUrls): # i是数组siteUrls的索引,v是siteUrls的值11 print v12 #############################################13 # 上下两种方法都能遍历输出结果,原因是siteUrls 是数组类型14 #for i in range(0,len(siteUrls)):15 # print siteUrls[i]

输出结果为:

alex@universe ~/python/OOP $ python spider_BeautifulSoup.py   www.apple.com/stevejobs/ 2013-3-13    cn.engadget.com/tag/SteveJobs/ 2013-3-13    book.douban.com/subject/65121... 2013-3-13  wenku.baidu.com/view/dd72f7eeb8f67c1... 2012-7-10   www.forbes.com/profile/steve...jobs/ 2013-3-24    www.yeeyan.org/articles/view/Alexhon... 2013-3-13    www.ifanr.com/6619 2013-3-13    www.businessinsider.com/blackboard/s... 2013-3-13  

这里并没有去掉html标签。

BeautifulSoup()可以把刚才抓到的字符串转化为Beautiful的对象。这样就可以应用BeautifulSoup提供的一些方法处理HTML。比如,findAll('a')就可以返回一个所有页面的a标签的List,我觉得这个和JS里面的getElementByTagName挺像的。另外也可以指定attrs参数,这个参数就是一个筛选条件,其数据结构是一个字典。findAll('span',attrs={'class':'g'})的意思就是返回所有class='g'的span标签的内容(包括span标签自身)。

 

用正则式和BeautifulSoup获得内容还需要进一步处理,因为其中包含html标签。类似,hi.baidu.com/<b>cloga</b> 2010-8-29或者<span> hi.baidu.com/<b>cloga</b> 2010-8-29 </span>,同样可以用正则式的sub方法替换掉这些标签。

strip_tag_pat=re.compile(r'<.*?>')
file=open('results000.csv','w')
for i in results:
    i0=re.sub(strip_tag_pat,'',i)
    i0=i0.strip()
    i1=i0.split(' ')
    date=i1[-1]
    siteUrl=''.join(i1[:-1])
    rank+=1
    file.write(date+','+siteUrl+','+str(rank)+'\n')
file.close()

再来就是把对应的结果输出到文件中,比如,排名、URL、收入日期这样的形式。OK,这样就用Python实现了一个简单的爬虫需求。秀一下上面代码的输出。

Result

文章来源:Cloga与网站|数字分析,转载请注明出处。

转载于:https://www.cnblogs.com/spaceship9/archive/2013/03/29/2988036.html

你可能感兴趣的文章
[洛谷1485] 火枪打怪
查看>>
PAT B1018.锤子剪刀布(20)
查看>>
Extjs控件之 grid打印功能
查看>>
枚举类型(不常用)递归
查看>>
ETL
查看>>
Tomcat源码分析(六)--日志记录器和国际化
查看>>
YII缓存依赖的应用
查看>>
决策树在机器学习的理论学习与实践
查看>>
Biee 11g权限详解
查看>>
minggw 安装
查看>>
Jquery操作cookie,实现简单的记住用户名的操作
查看>>
[BZOJ1196][HNOI2006]公路修建问题 二分答案+最小生成树
查看>>
PHP基础入门(二)
查看>>
[Luogu P3119] [USACO15JAN]草鉴定Grass Cownoisseur (缩点+图上DP)
查看>>
【原创】大数据基础之Zookeeper(4)应用场景
查看>>
18款在线代码片段测试工具
查看>>
20.C++- &&,||逻辑重载操作符的缺陷、,逗号重载操作符的分析
查看>>
静态变量数组实现LRU算法
查看>>
在SQL中怎么把一列字符串拆分为多列
查看>>
中文系统 上传file的input显示英文
查看>>