gpt4 book ai didi

python - 是否可以使用 XPath 选择器 (lxml) 抓取 html 数据属性?

转载 作者:太空宇宙 更新时间:2023-11-04 09:03:10 24 4
gpt4 key购买 nike

我正试图从这个网站上抓取所有的职业页面:http://wearemadeinny.com/find-a-job/

我尝试了以下方法,但不幸的是,href 仅在您点击其中一个公司页面时才会出现:

from lxml import html
import requests

page = requests.get("http://wearemadeinny.com/find-a-job/")
tree = lxml.html.fromstring(page.text)

jobs = tree.xpath('//*[@id="venue-hiring"]/a/@href')

links = [x for x in jobs]

print links

我注意到每个 <li>包含包含作业页面 url 的 html 数据属性。那么,是否可以从每个 <li> 中抓取 data-hiringurl 属性? .如果不使用 lxml 和 XPath 选择器,还有其他选择吗?

这是 <li> 之一我想从中提取的元素。我特别想提取 data-hiringurl="http://www.admeld.com/about/jobs/"这个元素的 xpath 是//*[@id="v7"]

<li id="v7" data-vid="7" data-name="Admeld" data-address="230 Park Avenue South Suite 1201" data-lat="40.7378349" data-long="-73.9886703" data-url="http://www.admeld.com/" data-hiring="1" data-hiringurl="http://www.admeld.com/about/jobs/" data-whynyc="" data-category="1"><a href="#" class="list-digital">
<span class="venue-name">Admeld</span><br>
<span class="venue-address">230 Park Avenue South</span>
<br><span class="venue-hiring">We are hiring!</span>
</a>
</li>

最佳答案

通过lxml搜索期望的内容

假设您已经拥有包含所需数据的页面内容。代码显示通过 http 请求获取它,如果它需要在浏览器中呈现,请参阅我的答案的后面部分如何获取它。

如果你想获取属性 data-hiringurl 中的所有值,请尝试 XPath //@data-hiringurl

from lxml import html
import requests

url = "http://wearemadeinny.com/find-a-job/"

page = requests.get(url)
tree = html.fromstring(page.text) # corrected, used to be `lxml.html.fromstring`

xp = "//@data-hiringurl"
job_urls = tree.xpath(xp)

print print job_urls

但我不确定,您提供的网址是否包含此类数据。我在那里没有找到它。

获取JavaScript渲染的页面内容

如果页面获取到你感兴趣的内容动态呈现在客户端,你需要提供浏览器上下文并让它在那里呈现。使用 selenium 可以完成这项工作:

>>> from selenium import webdriver
>>> browser = webdriver.Firefox()
>>> url = "http://wearemadeinny.com/find-a-job/"
>>> browser.get(url)
>>> page = browser.page_source
>>> print page

现在您在 page 中有了页面的可变内容,您可以继续使用 lxml,如上所述。

注意:我不保证,你会在页面中得到预期的内容,我只知道,它以呈现的形式出现。但是,如果您需要通过单击页面上的某些元素、填写一些文本、按下按钮来继续操作,所有这些都可以通过上面显示的 browser 实例来完成 - 只需阅读文档即可。

关于python - 是否可以使用 XPath 选择器 (lxml) 抓取 html 数据属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23483564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com