1

私はいくつかのHTMLを解析しようとしていて、タグ間の実際のHTMLを取得したいのですが、代わりに私のコードは要素の場所であると私が信じているものを私に与えています.

これまでの私のコードは次のとおりです。

import urllib.request, http.cookiejar
from lxml import etree
import io
site = "http://somewebsite.com"


cj = http.cookiejar.CookieJar()
request = urllib.request.Request(site)
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
request.add_header('User-agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0')
html = etree.HTML(opener.open(request).read())

xpath = "//li[1]//cite[1]"
filtered_html = html.xpath(xpath)
print(filtered_html)

html の一部を次に示します。

<div class="f kv">
<cite>
www.
<b>hello</b>
online.com/
</cite>
<span class="vshid">
</div>

現在、私のコードは次を返します:

[<Element cite at 0x36a65e8>, <Element cite at 0x36a6510>, <Element cite at 0x36a64c8>]

cite タグ間の実際の html コードを抽出するにはどうすればよいですか? 「/text()」を xpath の最後に追加すると、より近くなりますが、b タグの内容が除外されます。私の最終的な目標は、私のコードが「www.helloonline.com/」を提供することです。

ありがとうございました

4

2 に答える 2

0

これは、だけrequestsで実行できます。lxml/text()xpath

import requests
from lxml import html

site = "http://somewebsite.com"
tree = html.fromstring(requests.get(site).content)
xpath = "//li[1]//cite[1]/text()"
data = tree.xpath(xpath)
于 2022-01-19T14:11:42.927 に答える