xpath和paqsel爬取智联招聘
时间: 2023-11-09 19:17:53 浏览: 37
智联招聘网站的页面是动态渲染的,因此无法直接使用 xpath 或者 beautifulsoup 进行爬取。我们可以使用模拟浏览器行为的方式,通过 Selenium 或者 Pyppeteer 等工具来模拟浏览器行为,将动态生成的页面内容爬取下来。
以下是一个使用 Selenium 和 ChromeDriver 爬取智联招聘网站上 Python 岗位信息的示例代码:
```python
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
import csv
# 设置 ChromeDriver 路径和 Chrome 选项
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless') # 设置为无头模式,不显示浏览器界面
chrome_options.add_argument('--disable-gpu') # 禁用 GPU 加速
chrome_driver_path = 'chromedriver.exe' # ChromeDriver 路径
# 启动 ChromeDriver 和浏览器
driver = webdriver.Chrome(executable_path=chrome_driver_path, options=chrome_options)
driver.maximize_window() # 窗口最大化
driver.get('https://sou.zhaopin.com/?jl=530&kw=python&kt=3') # 打开智联招聘网站
# 等待页面加载完成
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, '.job-list')))
# 解析数据并存储到 CSV 文件中
with open('jobs.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['职位名称', '公司名称', '工作地点', '薪资范围', '发布时间'])
while True:
# 找到当前页所有的职位信息
job_list = driver.find_elements_by_css_selector('.job-list ul li')
# 遍历职位信息,将数据写入 CSV 文件
for job in job_list:
job_name = job.find_element_by_css_selector('.jobname a').text.strip()
company_name = job.find_element_by_css_selector('.company a').text.strip()
city = job.find_element_by_css_selector('.jobarea').text.strip()
salary = job.find_element_by_css_selector('.salary').text.strip()
publish_time = job.find_element_by_css_selector('.time').text.strip()
writer.writerow([job_name, company_name, city, salary, publish_time])
# 找到下一页的按钮并点击
next_page_btn = driver.find_element_by_css_selector('.soupager .next')
if 'disabled' in next_page_btn.get_attribute('class'):
break
else:
next_page_btn.click()
print('数据爬取完成!')
# 关闭浏览器和 ChromeDriver
driver.close()
driver.quit()
```
这里使用了 Selenium 和 ChromeDriver 来模拟浏览器行为,将动态渲染的页面内容爬取下来。我们使用了 ChromeDriver 的无头模式,不显示浏览器界面,以提高爬取效率。通过 find_element_by_css_selector() 方法来查找页面元素,获取页面内容,并将数据写入 CSV 文件中。需要注意的是,由于智联招聘网站有反爬机制,因此在爬取数据时需要使用一些技巧,比如模拟点击下一页按钮来获取更多数据。