【问题标题】:retrieving essential data from a webpage using python使用python从网页中检索基本数据
【发布时间】:2011-03-15 17:50:58
【问题描述】:

以下是我使用 urlretrieve (urllib) 下载的网页的一部分。我只想将下面给出的网页中的这些数据写入另一个文本文件:

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

同样... 我应该使用哪个模块?,所有命令??

提前谢谢..:)

网页的一部分

<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>

【问题讨论】:

  • "我应该使用哪个模块?"你应该搜索。就在 Stack Overflow 上。如果你搜索,你会发现几乎每个人都推荐 Beautiful Soup。其他人都建议使用 lxml。现在,请关闭这个问题,因为它被问了几十次,每次都给出相同的两个答案。
  • 使用urllib2 进行抓取,beautifulsoup 进行解析,最好使用csv 模块来写出你的文件。正如@S.Lott 提到的,网站上有很多相关问题。再次询问您何时尝试并遇到问题或需要对特定事物的更多见解。祝你好运。

标签: python get urllib2 beautifulsoup urllib


【解决方案1】:
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()            

如果你假设保存的页面像这样开始,效果会很好

<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>

导致

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    相关资源
    最近更新 更多