2017-01-05 19 views
0

私はサイトから段落を取得したかったのですが、このようにしていました。 すべてのhtmlタグを削除したWebページのテキストを取得しました。返されたすべてのテキストを特定の段落形式で取得できるかどうかを調べたいと思っていました。それはWeb scraping、python and beautifulsoup

>>>>Basin 


    Main source 
    Erzurum Province, Turkey 


    River mouth 
    Kura river 


    Physical characteristics 


    Length 
    1,072 km (666 mi) 


    The Aras or Araxes is a river in and along the countries of Turkey,  
    Armenia, Azerbaijan, and Iran. It drains the south side of the Lesser 
    Caucasus Mountains and then joins the Kura River which drains the north 
    side of those mountains. Its total length is 1,072 kilometres (666 mi). 
    Given its length and a basin that covers an area of 102,000 square 
    kilometres (39,000 sq mi), it is one of the largest rivers of the 
    Caucasus. 



    Contents 


    1 Names 
    2 Description 
    3 Etymology and history 
    4 Iğdır Aras Valley Bird Paradise 
    5 Gallery 
    6 See also 
    7 Footnotes 

をプリントアウトし、私はこれだけ段落

The Aras or Araxes is a river in and along the countries of Turkey,  
    Armenia, Azerbaijan, and Iran. It drains the south side of the Lesser 
    Caucasus Mountains and then joins the Kura River which drains the north 
    side of those mountains. Its total length is 1,072 kilometres (666 mi). 
    Given its length and a basin that covers an area of 102,000 square 
    kilometres (39,000 sq mi), it is one of the largest rivers of the 
    Caucasus. 

を取得したいテキストの

HERESに私のコードをHERES

import requests 
from bs4 import BeautifulSoup 

response = requests.get("https://en.wikipedia.org/wiki/Aras_(river)") 
txt = response.content 

soup = BeautifulSoup(txt,'lxml') 
filtered = soup.get_text() 
print(filtered) 

に一部をフィルタリングすることも可能ですこのパラグラフ?

+0

:あなたはGoogle ChromeのまたはFirefoxを使用している場合は、$x機能を使用してデベロッパーツール内のXPath式をテストすることができ、ところであなたの要素(複数可)

の文字列表現を与える

string機能あなたはもう少しBeautifulSoup文書を読んでください。クラス名とxpathを指定して、データを取得する要素を正確に指定することができます。 – JosephGarrone

+0

は@JosephGarroneを行います – Boneyflesh

答えて

1
soup = BeautifulSoup(txt,'lxml') 
filtered = soup.p.get_text() # get the first p tag. 
print(filtered) 

アウト:

The Aras or Araxes is a river in and along the countries of Turkey, Armenia, Azerbaijan, and Iran. It drains the south side of the Lesser Caucasus Mountains and then joins the Kura River which drains the north side of those mountains. Its total length is 1,072 kilometres (666 mi). Given its length and a basin that covers an area of 102,000 square kilometres (39,000 sq mi), it is one of the largest rivers of the Caucasus. 
1

XPathを使用代わりに!はるかに簡単で、より正確で、これらのユースケースのために特別に設計されています。残念ながら、BeautifulSoupはXPathを直接サポートしていません。あなたは、XPathにlxmlパッケージの代わりに

import urllib2 
from lxml import etree 

response = urllib2.urlopen("https://en.wikipedia.org/wiki/Aras_(river)") 
parser = etree.HTMLParser() 
tree = etree.parse(response, parser) 
tree.xpath('string(//*[@id="mw-content-text"]/p[1])') 

説明を使用する必要があります。

//は、文書のルート要素を指します。

*は、任意のタグ

[@id="mw-content-text"]条件を指定すると一致します。

p[1]は、コンテナ内のタイプpの最初の要素を選択します。

$x('string(//*[@id="mw-content-text"]/p[1])') 
関連する問題