python 中的网络抓取文本()
Web scraping a text() in python
我在使用网络抓取功能时遇到问题。我想要获得的两件事的 XPath 是
/html/body/div/table[2]/tbody/tr[5]/td[1]/div[1]/ul/li[1]/text()
/html/body/div/table[2]/tbody/tr[5]/td[1]/div[1]/ul/li[1]/a
html是
<li><a href="http://www.acu.edu/" target="_blank" class="institution">Abilene Christian University</a> (TX)</li>
我正在尝试使用一个函数来遍历 tr[5] 中的每个 li。我遇到的问题是获取 text()。我已经尝试了这个函数的许多不同变体
from lxml.html import parse
from urllib2 import urlopen
def _clean(lst):
for elm in lst:
lnk=elm.findall('.//a')
for this in lnk:
lnk_txt.append(this.text_content())
state_txt.append(elm.findall('.//text()'))
此特定函数 returns '()' 上的 KeyError。如果我删除 (),它会 returns 一个空元素列表。 lnk_txt 有效。
我想要得到的是两个列表。一是大学的名称。另一个是大学的位置。最终目标是制作元组 (name, state).
您需要找到 a
元素的 following text sibling:
lnk.xpath("following-sibling::text()")
演示:
>>> import lxml.html
>>> data = '<li><a href="http://www.acu.edu/" target="_blank" class="institution">Abilene Christian University</a> (TX)</li>'
>>> li = lxml.html.fromstring(data)
>>> li.xpath("//a[@class='institution']/following-sibling::text()")[0].strip()
'(TX)'
我在使用网络抓取功能时遇到问题。我想要获得的两件事的 XPath 是
/html/body/div/table[2]/tbody/tr[5]/td[1]/div[1]/ul/li[1]/text()
/html/body/div/table[2]/tbody/tr[5]/td[1]/div[1]/ul/li[1]/a
html是
<li><a href="http://www.acu.edu/" target="_blank" class="institution">Abilene Christian University</a> (TX)</li>
我正在尝试使用一个函数来遍历 tr[5] 中的每个 li。我遇到的问题是获取 text()。我已经尝试了这个函数的许多不同变体
from lxml.html import parse
from urllib2 import urlopen
def _clean(lst):
for elm in lst:
lnk=elm.findall('.//a')
for this in lnk:
lnk_txt.append(this.text_content())
state_txt.append(elm.findall('.//text()'))
此特定函数 returns '()' 上的 KeyError。如果我删除 (),它会 returns 一个空元素列表。 lnk_txt 有效。
我想要得到的是两个列表。一是大学的名称。另一个是大学的位置。最终目标是制作元组 (name, state).
您需要找到 a
元素的 following text sibling:
lnk.xpath("following-sibling::text()")
演示:
>>> import lxml.html
>>> data = '<li><a href="http://www.acu.edu/" target="_blank" class="institution">Abilene Christian University</a> (TX)</li>'
>>> li = lxml.html.fromstring(data)
>>> li.xpath("//a[@class='institution']/following-sibling::text()")[0].strip()
'(TX)'