在python脚本中使用选择器获取项目

2024-09-30 10:35:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python编写了一些代码,从网页上获取公司的详细信息和名称。我在脚本中使用css选择器来收集这些项目。但是,当我运行它时,我只得到“company details”和“contact”,只有完整字符串中由“br”标记分隔的第一部分。除了我现有的,我怎么才能得到全部的呢?在

我正在尝试的脚本:

import requests ; from lxml import html

tree = html.fromstring(requests.get("https://www.austrade.gov.au/SupplierDetails.aspx?ORGID=ORG8000000314&folderid=1736").text)
for title in tree.cssselect("div.contact-details"):
    cDetails = title.cssselect("h3:contains('Contact Details')+p")[0].text
    cContact = title.cssselect("h4:contains('Contact')+p")[0].text
    print(cDetails, cContact)

搜索结果所在的元素:

^{pr2}$

我得到的结果是:

Company Name: Distance Learning Australia Pty Ltd Name: Christine Jarrett

结果我要的是:

Company Name: Distance Learning Australia Pty Ltd
Phone: +61 2 6262 2964
Fax: +61 2 6169 3168
Email: rto@dla.com.au

Name: Christine Jarrett
Phone: +61 2 6262 2964
Fax: +61 2 6169 3168
Email: chris.jarrett@dla.com.au

顺便说一句,我的目的是只使用选择器而不是xpath来完成上述操作。提前谢谢。在


Tags: textnameimport脚本treetitlehtml选择器
2条回答

text返回第一个文本节点。如果要在抓取文本节点时遍历所有子节点,请使用xpath,如下所示:

company_details = title.cssselect("h3:contains('Contact Details')+p")[0]
for node in company_details.xpath("child::node()"):
    print node

结果:

^{pr2}$

只需将text属性替换为text_content()方法即可获得所需的输出:

cDetails = title.cssselect("h3:contains('Contact Details')+p")[0].text_content()
cContact = title.cssselect("h4:contains('Contact')+p")[0].text_content()

相关问题 更多 >

    热门问题