欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python学习笔记 BeautifulSoup趴数据

程序员文章站 2022-03-30 12:01:32
最近再一家互联网公司实习,原来是使用java,头要求从网页上抓取数据,做成可视化页面。要求使用python脚本 参考的资料 :python简明教程 百度一下,就可以搜到电子版本;是...

最近再一家互联网公司实习,原来是使用java,头要求从网页上抓取数据,做成可视化页面。要求使用python脚本

参考的资料 :python简明教程 百度一下,就可以搜到电子版本;是以2.7为基础的,非常适合初学者,不厚,却没有那么多废话

公司询问之后,发现,虽然python已经升级到3.3以上,可是大部分的公司都还在使用python2.7,是出于稳定性的考虑。除非出现新的无法解决的bug,才会小心的升级到最近的可以解决问题的稳定版本。

为了从网页中趴取数据:使用了python+ 一种html网页解析神器具:beautifulsoup

我使用的mac,mac自己集成了py2.7,可以安装py3.3, 建议不要吧默认设为py 3.3,会导致无法安装easy_install,pip

可以使用pip beautifulsoup 来安装sudo pip install beautifulsoup, 需要用到权限,所以要加sudo

关于beautifulsoup的使用可以参考以下两个连接:

 

官方中文教程:点击打开链接

 

推荐使用的是 pycharm,社区免费版本已经足够使用。公司里大部分用的都是这个,还有一部分坚守再sublime text上

 

mport urllib
from beautifulsoup import beautifulsoup

url = 连接;
alldata=

content = urllib.urlopen(url).read()
soup = beautifulsoup(content)

tags1 = soup.findall('tr', {class: even right})
tags2 = soup.findall('tr', {class: odd right})

 

 

比如上面的就是 利用写的一些代码,是要取出网页中class 为even right 的所有tr

和所有class 为odd right的所有tr

取出之后就可以打印出他的内容,例如:

 

for tag in tags2:
    t= tag.contents[1]
    s = t.text #获取tag中得内容
    print 	 + s,
    alldata += 	 + s

    t= tag.contents[2]
    s = t.text
    print 	 + s,
    alldata += 	 + s,
    
    t= tag.contents[3]
    s = t.text
    print 	 + s, 
alldata += + s,

 

open(/users/charleszhu/alldata.csv, w).write(alldata)

 


这里值得注意的是 python中使用输出如何不换行的一个小技巧就是:print之后,加一个逗号,就可以不换行输入,若要换行,可以输出“ ”,或者直接print不加逗号。

同事python中得for循环,是按照缩进,来判断层次的,需要格外注意~再pycharm中,写中文注释运行时候可能会报错,在文件头上加上 #coding:utf-8(带上#)就可以确保运行不报错同事 你可以将你的内容全部写入文件中

就可以再对应位置写入相应文档。