私はこのURLでhtmlコンテンツをスクレイプしようとしています:http://www.dlib.org/dlib/november14/beel/11beel.htmlこのPythonsintaxで:
s="http://www.dlib.org/dlib/november14/beel/11beel.html"
content = requests.get(s)
tree = html.fromstring(content.text)
titoli = tree.xpath('/html/body/form/table[3]/tr/td/table[5]/tr/td/table[1]/tr/td[2]/h3/text()')
par = tree.xpath('/html/body/form/table[3]/tr/td/table[5]/tr/td/table[1]/tr/td[2]/p/text()')
articoli = json.dumps({'titoli':titoli,'contenuti':par})
print ("Content-type: json")
print
print (articoli)
主なリクエストは、ページの最も便利なdiv内のすべてのタグ、タグコンテンツ、テキストを返すXPathクエリを見つけることです。これは、このパス/ html / body / form / table [3] / tr / td /で見つけることができます。 table [5]またはコメント行の下のWebインスペクターの使用:!-CONTENTTABLE-。以前に投稿したコードでは、divのコンテンツ全体を取得することはできませんが、p div内のタイトルとテキストのみを取得することができます。現在、別の方法を見つけることができません。
Python / XPathを使用してWebサイトの特定のセクションの実際のHTMLコンテンツを取得するには、のfrom lxml import etree
代わりに使用する方が簡単ですfrom lxml import html
。要素ツリーを設定すると、(前述のように)テキストコンテンツを返すだけでなく、要素のHTMLコンテンツを返すことができる関数があります。コードは次のようになります。
from lxml import etree
import requests
s = "http://www.dlib.org/dlib/november14/beel/11beel.html"
page = requests.get(s)
tree = etree.HTML(page.text)
element = tree.xpath('./body/form/table[3]/tr/td/table[5]')
content = etree.tostring(element[0])
tree.xpath
選択した要素のリストを返します。この場合、特定のXPathを使用しているため、1つの要素のみを含むリストが返されます。したがって、を使用etree.tostring(element[0])
してリストの最初の要素にアクセスし、要素のHTMLコンテンツを文字列として返す必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加