【问题标题】:Simple Web Scraping with Python使用 Python 进行简单的网页抓取
【发布时间】:2014-12-03 02:20:10
【问题描述】:

我还没有找到一个简单的方法来做到这一点,我一直在关注this 我写了以下内容,

##just comments before this
    import lxml,requests
 23 page = requests.get('https://finalexams.rutgers.edu.html')
 24 
 25 tree = html.fromstring(page.text)
 26 
 27 tableRow = tree.xpath('//tr/text() ' )
 28 
 29 print 'Rows' , tableRow

该脚本需要解析这些表格行并取出其中的内容,但可能存在无限数量的表格行。我不知道如何访问嵌套标签,而且它们没有唯一的名称或 ID 供我查找。

如何编写一个 for 循环来获取这些表中的每一行并让我获取它们的各个位?

  <tr>
    <td> 04264</td>
    <td>01:198:205</td>
    <td>01</td>
    <td>INTR DISCRET STRCT I</td>



  <td>C</td>
  <td>Dec 17, 2014:  8:00 AM - 11:00 AM </td>




  </tr>

  <tr>
    <td> 09907</td>
    <td>01:198:214</td>
    <td>01</td>
    <td>SYSTEMS PROGRAMMING</td>



  <td>C</td>
  <td>Dec 18, 2014:  8:00 PM - 11:00 PM </td>




  </tr>

【问题讨论】:

  • tree = html.fromstring(page.text) 不能与 import lxml 一起使用;你在某处做了from lxml import html 吗?

标签: python html web-scraping lxml


【解决方案1】:

如果您想查找 tr 元素本身,而不是它们的(空)文本,只需搜索 tr 元素,而不是它们的文本:

rows = tree.xpath('//tr')

然后你可以迭代它们:

for row in rows:

然后您可以在每个元素中搜索td 元素(例如,使用row.xpathrow.findall 等),或者假设它们的所有子元素都是td 元素(因为它们碰巧在这种情况下):

    for column in row:

然后你可以对每一列做任何你想做的事情,比如提取它的文本:

        print column.text

【讨论】:

    【解决方案2】:

    遍历所有tr标签并为每一行在td标签上做一个内循环,例如:

    from lxml.html import fromstring
    
    data = """
    your html here
    """
    
    root = fromstring(data)
    for index, row in enumerate(root.xpath('//table/tr')):
        print "Row #%s" % index
    
        for cell in row.findall('td'):
            print cell.text.strip()
    
        print "----"
    

    打印:

    Row #0
    04264
    01:198:205
    01
    INTR DISCRET STRCT I
    C
    Dec 17, 2014:  8:00 AM - 11:00 AM
    ----
    Row #1
    09907
    01:198:214
    01
    SYSTEMS PROGRAMMING
    C
    Dec 18, 2014:  8:00 PM - 11:00 PM
    ----
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      • 1970-01-01
      • 2020-10-04
      • 2021-05-08
      • 2018-07-20
      • 2021-01-13
      相关资源
      最近更新 更多