不能从懒汉那里抓到特定的标签

2024-09-22 20:24:12 发布

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

运行我的刮刀,我可以看到它刮不必要的链接以外的链接到每个学校我需要什么。不过,我已经创建了正确的XPath。站点包含lazyloading方法。可能需要获取json响应。我试过:

import requests
from lxml import html

url = "http://www.boarding.org.au/find-a-school"
def LazyLoadWeb(address):
    try : 
        page = requests.get(address, timeout=30)
    except Exception: 
        print('timed out')
    else:
        tree = html.fromstring(page.text)
        titles = tree.xpath('//div[contains(@class,"clearfix")]')
        for title in titles:
            links=title.xpath('.//a/@href')
            for link in links:
                print(link)

LazyLoadWeb(url)

Tags: inimporttreeurlfortitle链接address
1条回答
网友
1楼 · 发布于 2024-09-22 20:24:12

关于json响应,您是对的。这个站点使用Ajax来填充内容。您需要发出post请求,并从响应中简单地解析json

import requests

url = 'http://www.boarding.org.au/ajax-calls/GetSchoolsJson'
payload = {"state": 'null', "schoolType": 2, "orderMode": "ASC", "enableSchoolType": 'false', "loadAll": 'true'}
req = requests.post(url, json=payload)
data = req.json()
for i, item in enumerate(data, start=1):
    print(i, item['URL'])
# 1 /schools/details/4/Abbotsleigh
# ...
# 189 /schools/details/83/Yirara-College

相关问题 更多 >