从使用python网页检索基本数据 [英] retrieving essential data from a webpage using python

查看:198
本文介绍了从使用python网页检索基本数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面是一个网页,我下载了urlretrieve(urllib模块)的一部分。我想只写在下面给出另一个文本文件作为网页这样的数据:

 工程数学-IV,4,36,40,F
环境研究,47,36,83,P
...
..

likeways ..
哪些模块,我应该使用?这所有的命令??

感谢名单提前..:)

的网页的部分

 < TD>工程数学-IV抑制剂; / TD>
        < TD ALIGN =中心> 4℃; / TD>
        < TD ALIGN =中心> 36 LT; / TD>
        < TD ALIGN =中心> 40℃; / TD>
        < TD ALIGN =中心> F< / TD>
    < / TR>
< TR ALIGN =左边的bgcolor =#FFFFFF'> < TD> EIT402< / TD>
        < TD>环境研究< / TD>
        < TD ALIGN =中心> 47 LT; / TD>
        < TD ALIGN =中心> 36 LT; / TD>
        < TD ALIGN =中心> 83 LT; / TD>
        < TD ALIGN =中心> P< / TD>
    < / TR>
< TR ALIGN =左边的bgcolor =#DA9292'> < TD> EIT403< / TD>
        < TD>在线编程和LT; / TD>
        < TD ALIGN =中心> 40℃; / TD>
        < TD ALIGN =中心> 36 LT; / TD>
        < TD ALIGN =中心> 76 LT; / TD>
        < TD ALIGN =中心> P< / TD>
    < / TR>
< TR ALIGN =左边的bgcolor =#FFFFFF'> < TD> EIT404< / TD>
        < TD>基于微处理器的设计与LT; / TD>
        < TD ALIGN =中心>第3版; / TD>
        < TD ALIGN =中心> 35℃; / TD>
        < TD ALIGN =中心> 38 LT; / TD>
        < TD ALIGN =中心> F< / TD>
    < / TR>
< TR ALIGN =左边的bgcolor =#DA9292'> < TD> EIT405< / TD>
        < TD>编程范式< / TD>
        < TD ALIGN =中心> 42℃; / TD>
        < TD ALIGN =中心> 36 LT; / TD>
        < TD ALIGN =中心> -78℃; / TD>
        < TD ALIGN =中心> P< / TD>
    < / TR>
< TR ALIGN =左边的bgcolor =#FFFFFF'> < TD> EIT406< / TD>
        < TD>通信系统< / TD>
        < TD ALIGN =中心> 9< / TD>
        < TD ALIGN =中心> 35℃; / TD>
        < TD ALIGN =中心> 44 LT; / TD>
        < TD ALIGN =中心> F< / TD>
    < / TR>
< TR ALIGN =左边的bgcolor =#DA9292'> < TD> EIT407< / TD>
        < TD>数据结构LAB< / TD>
        < TD ALIGN =中心大于10< / TD>
        < TD ALIGN =中心> 35℃; / TD>
        < TD ALIGN =中心> 45℃; / TD>
        < TD ALIGN =中心> F< / TD>
    < / TR>
< TR ALIGN =左边的bgcolor =#FFFFFF'> < TD> EIT408< / TD>
        < TD>的编程环境LAB< / TD>
        < TD ALIGN =中心> 20℃; / TD>
        < TD ALIGN =中心> 25℃; / TD>
        < TD ALIGN =中心> 45℃; / TD>
        < TD ALIGN =中心> F< / TD>
    < / TR>


解决方案

 进口的urllib2
进口BeautifulSoup高清的main():
    infname ='htmltable.html
    outfname ='courses.txt    开放(infname)为INF:
        HTML = inf.read()    DOC = BeautifulSoup.BeautifulSoup(HTML)
    表= doc.find('表',{'ID':'内容'})    开放(outfname,'W')的OUTF:
        在table.findAll('TR')行:
            ID,名称A,B,C,D = [cell.getText()。带(),用于在row.findAll细胞('TD')]
            outf.write({}名称,{A},{B},{c}里,{D} \\ N.format(ID = ID,名称=名称,A = A,B = B,C = C, D = d)条)如果__name __ ==__ main__:
    主要()

作品相当不错,如果你假设保存的页面开始像

 < HTML>< HEAD><标题>数据表< /标题>< /头><身体GT;
<表ID ='内容'>
< TR ALIGN =左边的bgcolor =#FFFFFF'> < TD> EIT402< / TD>
    < TD>工程数学-IV抑制剂; / TD>
        < TD ALIGN =中心> 4℃; / TD>
        < TD ALIGN =中心> 36 LT; / TD>
        < TD ALIGN =中心> 40℃; / TD>
        < TD ALIGN =中心> F< / TD>
    < / TR>

产生

 工程数学-IV,4,36,40,F
环境研究,47,36,83,P
系统编程,40,36,76,P
基于微处理器的设计,3,35,38,女
编程范式,42,36,78,P
通信系统,9,35,44,女
数据结构LAB,10,35,45,女
编程环境LAB,20,25,45,女

Following is a part of a webpage i downloaded with urlretrieve (urllib). I want to write only this data from the webpage given below in to another text file as:

ENGINEERING MATHEMATICS-IV, 4 ,36 ,40 , F
ENVIRONMENTAL STUDIES, 47, 36, 83 , p
...
..
.

likeways.. which module should i use?, which all commands??

thanx in advance..:)

part of the webpage

<td>ENGINEERING MATHEMATICS-IV</td>
        <td align=center>4</td>
        <td align=center>36</td>
        <td align=center>40</td>
        <td align=center>F</td>
    </tr>
<tr align=left bgcolor='#FFFFFF'>       <td>EIT402    </td>
        <td>ENVIRONMENTAL STUDIES</td>
        <td align=center>47</td>
        <td align=center>36</td>
        <td align=center>83</td>
        <td align=center>P</td>
    </tr>
<tr align=left bgcolor='#DA9292'>       <td>EIT403    </td>
        <td>SYSTEM PROGRAMMING</td>
        <td align=center>40</td>
        <td align=center>36</td>
        <td align=center>76</td>
        <td align=center>P</td>
    </tr>
<tr align=left bgcolor='#FFFFFF'>       <td>EIT404    </td>
        <td>MICROPROCESSOR BASED DESIGN</td>
        <td align=center>3</td>
        <td align=center>35</td>
        <td align=center>38</td>
        <td align=center>F</td>
    </tr>
<tr align=left bgcolor='#DA9292'>       <td>EIT405    </td>
        <td>PROGRAMMING PARADIGMS</td>
        <td align=center>42</td>
        <td align=center>36</td>
        <td align=center>78</td>
        <td align=center>P</td>
    </tr>
<tr align=left bgcolor='#FFFFFF'>       <td>EIT406    </td>
        <td>COMMUNICATION SYSTEMS</td>
        <td align=center>9</td>
        <td align=center>35</td>
        <td align=center>44</td>
        <td align=center>F</td>
    </tr>
<tr align=left bgcolor='#DA9292'>       <td>EIT407    </td>
        <td>DATA STRUCTURE LAB</td>
        <td align=center>10</td>
        <td align=center>35</td>
        <td align=center>45</td>
        <td align=center>F</td>
    </tr>
<tr align=left bgcolor='#FFFFFF'>       <td>EIT408    </td>
        <td>PROGRAMMING  ENVIRONMENTS  LAB</td>
        <td align=center>20</td>
        <td align=center>25</td>
        <td align=center>45</td>
        <td align=center>F</td>
    </tr>

解决方案

import urllib2
import BeautifulSoup

def main():
    infname  = 'htmltable.html'
    outfname = 'courses.txt'

    with open(infname) as inf:
        html = inf.read()

    doc   = BeautifulSoup.BeautifulSoup(html)
    table = doc.find('table',{'id':'content'})

    with open(outfname, 'w') as outf:
        for row in table.findAll('tr'):
            id,name,a,b,c,d = [cell.getText().strip() for cell in row.findAll('td')]
            outf.write("{name}, {a}, {b}, {c}, {d}\n".format(id=id, name=name, a=a, b=b, c=c, d=d))

if __name__=="__main__":
    main()            

works quite nicely if you assume the saved page starts like

<html><head><title>Data Table</title></head><body>
<table id='content'>
<tr align=left bgcolor='#FFFFFF'>       <td>EIT402    </td>
    <td>ENGINEERING MATHEMATICS-IV</td>
        <td align=center>4</td>
        <td align=center>36</td>
        <td align=center>40</td>
        <td align=center>F</td>
    </tr>

resulting in

ENGINEERING MATHEMATICS-IV, 4, 36, 40, F
ENVIRONMENTAL STUDIES, 47, 36, 83, P
SYSTEM PROGRAMMING, 40, 36, 76, P
MICROPROCESSOR BASED DESIGN, 3, 35, 38, F
PROGRAMMING PARADIGMS, 42, 36, 78, P
COMMUNICATION SYSTEMS, 9, 35, 44, F
DATA STRUCTURE LAB, 10, 35, 45, F
PROGRAMMING  ENVIRONMENTS  LAB, 20, 25, 45, F

这篇关于从使用python网页检索基本数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆