2017-04-01 8 views
0

のリンクからテキストを抽出する私は、このページに表を削るのpython 2.7でスクリプトを持っていますリンクを持つ列(2列目と3列目)。このコードHTMLテーブルでパイソン

budgeturl = "http://www.the-numbers.com/movie/budgets/all" 
s = urllib.urlopen(budgeturl).read() 
htmlpage = etree.HTML(s) 
htmltable = htmlpage.xpath("//td[@class='data']/text()") 

[0]ランク、HTMLテーブルである[1]製造予算であり、以降そこから継続します。 私が紛失しているものから、リンクではなくテキストが必要です。

+0

は、あなただけのdata'' 'クラス= 'を指定せずにテキストをつかむことはできますか?他のTDにはクラスがないようです。 –

+0

どうすればよいか分かりません – MovieBall

答えて

1

あなたがすべてではないtd要素がclass="data"を持っているので、あなたのXPathを修正する必要があります。 このxpath式を試してください://td//text()

import urllib 
from lxml import etree 

budgeturl = "http://www.the-numbers.com/movie/budgets/all" 
s = urllib.urlopen(budgeturl).read() 
htmlpage = etree.HTML(s) 
htmltable = htmlpage.xpath("//td//text()") 

出力: enter image description here

1
import urllib 

budgeturl = "http://www.the-numbers.com/movie/budgets/all" 
s = urllib.urlopen(budgeturl).read() 

def find_between(s, first, last): 
    try: 
     start = s.index(first) + len(first) 
     end = s.index(last, start) 
     return s[start:end] 
    except ValueError: 
     return "" 

s = find_between(s, '<table>', '</table>') 

print s[:500] 
print '.............................................................' 
print s[-250:] 

Find string between two substrings

戻り値:

>>> 
<tr><th>&nbsp;</th><th>Release Date</th><th>Movie</th><th>Production Budget</th><th>Domestic Gross</th><th>Worldwide Gross</th></tr> 
<tr><td class="data">1</td> 
<td><a href="/box-office-chart/daily/2009/12/18">12/18/2009</a></td> 
<td><b><a href="/movie/Avatar#tab=summary">Avatar</a></td> 
<td class="data">$425,000,000</td> 
<td class="data">$760,507,625</td> 
<td class="data">$2,783,918,982</td> 
<tr> 
<tr><td class="data">2</td> 
<td><a href="/box-office-chart/daily/2015/12/18">12/18/2015</a></td> 
............................................................. 
</td> 
<td><a href="/box-office-chart/daily/2005/08/05">8/5/2005</a></td> 
<td><b><a href="/movie/My-Date-With-Drew#tab=summary">My Date With Drew</a></td> 
<td class="data">$1,100</td> 
<td class="data">$181,041</td> 
<td class="data">$181,041</td> 
<tr> 

enter image description here

......................................... 

enter image description here

私はリンクではなくテキストが必要です。あなたが同じことを行うためにbeautifulsoup使用することができます

Release Date,Movie,Production Budget,Domestic Gross,Worldwide Gross 
1,12/18/2009,Avatar,"$425,000,000","$760,507,625","$2,783,918,982" 
8/5/2005,My Date With Drew,"$1,100","$181,041","$181,041" 
http://www.convertcsv.com/html-table-to-csv.htmを経由して、次を参照してください。

beautifulSoup html csv