提交表单以从作业板中删除数据

2024-09-24 22:29:01 发布

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

我正在尝试编写一个脚本,从特定的website获取作业详细信息。当我在googlechrome中查看源代码(command-option-U)和开发工具(command-option-I)时,html代码似乎有所不同。开发工具有我可以用HTML解析的实际细节。在

我所追求的一个例子可以从网站的第一个招聘启事中找到:

Canada-Alberta-Fort McMurray, Canada-Alberta-Edmonton

我知道我需要使用POST提交一个表单,但除此之外,我在获取开发工具中找到的html代码时遇到了困难,但在我的请求中却没有。在

import requests
url='https://caterpillar.taleo.net/careersection/cat+external+cs/jobsearch.ftl?lang=en&portal=4140124208&src=CWS-10005'
r = requests.post(url, data={'dropListSize': 100})
print(r.status_code, r.reason)
html=r.text

我也尝试过使用mechanize的类似策略

^{pr2}$

一个相关的问题是我如何进入下一页,但我觉得我也许能找到答案。在


Tags: 代码脚本url源代码html作业详细信息website
1条回答
网友
1楼 · 发布于 2024-09-24 22:29:01

有一个XHR POST请求发送到https://caterpillar.taleo.net/careersection/cat+external+cs/jobsearch.ajax端点,其中包含响应中的所有搜索结果。您可以尝试模拟它(我怀疑根据参数数量和响应格式判断这不会很有趣),也可以通过^{}在真正的浏览器中加载页面,让浏览器加载页面,而不必担心搜索结果是如何传递的。在

使用selenium+^{}无头浏览器的工作示例:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


url = 'https://caterpillar.taleo.net/careersection/cat+external+cs/jobsearch.ftl?lang=en&portal=4140124208&src=CWS-10005'
driver = webdriver.PhantomJS()
driver.get(url)

wait = WebDriverWait(driver, 10)
table = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "table.contentlist")))

for row in table.find_elements_by_css_selector("tr.ftlrow"):
    title = row.find_element_by_css_selector(".titlelink a").text
    print(title)

driver.close()

印刷品:

^{pr2}$

相关问题 更多 >