Python 从“创建列表对象”_lxml.etree模块的ElementUnicodeResult对象;

Python 从“创建列表对象”_lxml.etree模块的ElementUnicodeResult对象;,python,xpath,web-scraping,lxml,Python,Xpath,Web Scraping,Lxml,我是Python新手,希望能从房源网站上搜集房地产数据。我已经成功地从页面中提取文本,但是返回的对象不是我所期望的 # import modules from lxml import html import requests # specify webpage to scrape url = 'https://www.mlslistings.com/Search/Result/e1fdabc8-9b53-470f-9728-b6ab1a5d1204/1' page = requests.ge

我是Python新手,希望能从房源网站上搜集房地产数据。我已经成功地从页面中提取文本,但是返回的对象不是我所期望的


# import modules
from lxml import html
import requests

# specify webpage to scrape
url = 'https://www.mlslistings.com/Search/Result/e1fdabc8-9b53-470f-9728-b6ab1a5d1204/1'
page = requests.get(url)
tree = html.fromstring(page.content)

# scrape desired information
address_raw = tree.xpath('//a[@class="search-nav-link"]//text()')
price_raw = tree.xpath('//span[@class="font-weight-bold listing-price d-block pull-left pr-25"]//text()')

正如预期的那样,对象
address\u raw
price\u raw
是列表。但此列表中包含的值不是具有立即可见的获取地址和价格的字符串。相反,它们都说
[[lxml.etree模块的elementunicodesult对象]
。在解释器中键入对象名称(例如,
address\u raw
)会显示列表中的地址,就像
print(address\u raw)
一样。如何创建一个简单的地址和价格列表作为字符串,而列表值不显示为
[\u elementunicodesult object of lxml.etree module]

您可以使用
str()
将对象强制转换为字符串,并使用
map()
将函数应用于列表的每个元素:

from lxml import html
import requests

url = 'https://www.mlslistings.com/Search/Result/e1fdabc8-9b53-470f-9728-b6ab1a5d1204/1'
page = requests.get(url)
tree = html.fromstring(page.content)

address_raw = list(map(str, tree.xpath('//a[@class="search-nav-link"]//text()')))
price_raw = list(map(str, tree.xpath('//span[@class="font-weight-bold listing-price d-block pull-left pr-25"]//text()')))
print(type(address_raw[0])) # => <class 'str'>
print(type(price_raw[0]))   # => <class 'str'>
从lxml导入html
导入请求
url='1〕https://www.mlslistings.com/Search/Result/e1fdabc8-9b53-470f-9728-b6ab1a5d1204/1'
page=请求.get(url)
tree=html.fromstring(page.content)
address_raw=list(map(str,tree.xpath('//a[@class=“search nav link”]//text()))
price_raw=list(map(str,tree.xpath('//span[@class=“font-weight bold listing price d-block-pull left pr-25”]//text()))
打印(类型(地址[0]))\
打印(类型(原始价格[0]))\
您可以使用
str()
将对象强制转换为字符串,并使用
map()
将函数应用于列表中的每个元素:

from lxml import html
import requests

url = 'https://www.mlslistings.com/Search/Result/e1fdabc8-9b53-470f-9728-b6ab1a5d1204/1'
page = requests.get(url)
tree = html.fromstring(page.content)

address_raw = list(map(str, tree.xpath('//a[@class="search-nav-link"]//text()')))
price_raw = list(map(str, tree.xpath('//span[@class="font-weight-bold listing-price d-block pull-left pr-25"]//text()')))
print(type(address_raw[0])) # => <class 'str'>
print(type(price_raw[0]))   # => <class 'str'>
从lxml导入html
导入请求
url='1〕https://www.mlslistings.com/Search/Result/e1fdabc8-9b53-470f-9728-b6ab1a5d1204/1'
page=请求.get(url)
tree=html.fromstring(page.content)
address_raw=list(map(str,tree.xpath('//a[@class=“search nav link”]//text()))
price_raw=list(map(str,tree.xpath('//span[@class=“font-weight bold listing price d-block-pull left pr-25”]//text()))
打印(类型(地址[0]))\
打印(类型(原始价格[0]))\