稍微说一下背景,当时我想研究蛋白质与小分子的复合物在空间三维结构上的一些规律,首先得有数据啊,数据从哪里来?就是从一个涵盖所有已经解析三维结构的蛋白质-小分子复合物的数据库里面下载。这时候,手动一个个去下显然是不可取的,我们需要写个脚本,能从特定的网站选择性得批量下载需要的信息。python是不错的选择。
import urllib #python中用于获取网站的模块
import urllib2, cookielib
有些网站访问时需要cookie的,python处理cookie代码如下:
cj = cookielibCookieJar ( )
opener = urllib2build_opener( urllib2>
1 获取html页面
其实,最基本的抓站,两句话就可以了
[python] view plaincopy
import urllib2
content = urllib2urlopen('')read()
这样可以得到整个html文档,关键的问题是我们可能需要从这个文档中获取我们需要的有用信息,而不是整个文档。这就需要解析充满了各种标签的html。
2 解析html
SGMLParser
Python默认自带HTMLParser以及SGMLParser等等解析器,前者实在是太难用了,我就用SGMLParser写了一个示例程序:
[python] view plaincopy
import urllib2
from sgmllib import SGMLParser
class ListName(SGMLParser):
def __init__(self):
SGMLParser__init__(self)
selfis_h4 = ""
selfname = []
def start_h4(self, attrs):
selfis_h4 = 1
def end_h4(self):
selfis_h4 = ""
def handle_data(self, text):
if selfis_h4 == 1:
selfnameappend(text)
content = urllib2urlopen('')read()
listname = ListName()
listnamefeed(content)
for item in listnamename:
print itemdecode('gbk')encode('utf8')
注意:我的电脑是win7中文系统,为了避免出现乱码,最后一行使用
[python] view plaincopy
for item in listnamename:
print item
很简单,这里定义了一个叫做ListName的类,继承SGMLParser里面的方法。使用一个变量is_h4做标记判定html文件中的h4标签,如果遇到h4标签,则将标签内的内容加入到List变量name中。解释一下start_h4()和end_h4()函数,他们原型是SGMLParser中的
start_tagname(self, attrs)
end_tagname(self)
tagname就是标签名称,比如当遇到<pre>,就会调用start_pre,遇到</pre>,就会调用 end_pre。attrs为标签的参数,以[(attribute, value), (attribute, value), ]的形式传回。
以上就是关于怎么使用python来爬取网页上的表格信息全部的内容,包括:怎么使用python来爬取网页上的表格信息、python爬虫怎么获取到的网站的所有url、python爬虫抓取哪儿网页上的一些字段等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)