前程无忧爬虫代码Selenium
时间: 2024-03-11 21:41:21 浏览: 151
以下是一个使用Selenium进行前程无忧爬虫的代码示例:
```python
from selenium import webdriver
import time
import random
# 创建浏览器驱动
driver = webdriver.Chrome()
# 打开前程无忧网站
driver.get("https://www.51job.com/")
# 定位页码输入框并输入页码
page_input = driver.find_element_by_xpath('//*[@id="jump_page"]')
page_input.click()
time.sleep(random.randint(10, 30) * 0.1)
page_input.clear()
time.sleep(random.randint(10, 40) * 0.1)
page_input.send_keys(page)
time.sleep(random.randint(10, 30) * 0.1)
# 点击跳转按钮
jump_button = driver.find_element_by_xpath('//*[@id="app"]/div/div[2]/div/div/div[2]/div/div[2]/div/div[3]/div/div/span[3]')
jump_button.click()
# 进行数据爬取和存储
# ...
# 关闭浏览器
driver.quit()
```
请注意,以上代码仅为示例,具体的数据爬取和存储部分需要根据实际需求进行编写。
相关问题
前程无忧爬虫遭遇反爬
前程无忧爬虫遭遇反爬是一个常见的问题。引用中提到可以通过分析网页的特点,比如url的变化等规律来进行爬取。可以尝试以下几种方法应对反爬措施:
1. 伪装请求头: 修改请求头中的User-Agent,使其看起来更像是正常的浏览器请求,而不是爬虫。这可以通过设置伪装的User-Agent来实现。
2. IP代理: 使用代理服务器来隐藏真实的IP地址,防止被网站封禁。可以使用付费的代理服务或者自己搭建代理池,定期更换IP地址。
3. 请求频率控制: 控制爬取的速度,不要过于频繁地发送请求,避免对网站造成过大的压力,也减少被封禁的风险。可以设置请求间隔时间。
4. 登录账号: 如果网站有登录功能,可以尝试使用账号登录后再进行爬取,这样可以获取到更多的数据,并且也可以避免一些反爬措施。
5. 解析动态内容: 部分网站使用了动态渲染技术,爬取静态页面无法获取到完整的数据。这时可以使用浏览器自动化工具,如Selenium,来模拟真实的浏览器行为,获取完整的页面数据。
需要注意的是,爬取网站的数据要遵守相关法律法规,并尊重网站的规定。在进行爬取之前,最好先查看网站的robots.txt文件,了解网站对爬虫的规定。同时,合理使用爬取的数据,避免对网站和他人造成不必要的困扰。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [前程无忧python爬虫](https://blog.csdn.net/hairclipper/article/details/103308057)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* [爬虫遇到的第一个反爬——拉勾网](https://blog.csdn.net/xuanfengyi04/article/details/96446724)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
前途无忧爬虫selenium
### 使用 Selenium 开发前程无忧网爬虫
#### 导入必要的库
为了使用 `Selenium` 进行网页抓取,首先需要导入所需的 Python 库。这些库包括用于控制浏览器的 `webdriver` 和定位元素的方法 `By`,以及辅助数据处理和解析 HTML 的工具。
```python
from selenium import webdriver # 调用浏览器驱动器
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup # 解析HTML文档
import pandas as pd # 数据存储与分析
import time # 控制执行间隔时间
```
#### 初始化 WebDriver 实例
创建一个 Chrome 浏览器实例,并设置一些基本参数以优化性能并减少干扰。这里假设已经安装好了适用于当前系统的 ChromeDriver 及对应的浏览器版本[^3]。
```python
options = webdriver.ChromeOptions()
options.add_argument('--headless') # 设置无头模式
driver = webdriver.Chrome(options=options)
```
#### 访问目标网址
指定要访问的目标 URL 地址,即前程无忧网站上的某个具体职位列表页面。可以通过修改URL中的查询字符串来自定义搜索条件,比如关键词、城市等。
```python
url = "https://www.51job.com/" # 替换成实际想要抓取的具体链接
driver.get(url)
time.sleep(2) # 等待页面加载完成
```
#### 获取总页码数量
利用 XPath 或 CSS Selector 定位分页控件,提取总的页数信息以便后续循环遍历每一页的内容。这一步骤对于实现多页数据采集至关重要[^1]。
```python
total_pages_element = driver.find_element(By.XPATH, '//div[@class="p_in"]/span')
total_pages_text = total_pages_element.text.strip().split('/')[1].strip('() ')
total_pages = int(total_pages_text)
print(f'Total Pages: {total_pages}')
```
#### 遍历各页并收集招聘信息
针对每一项工作条目,获取标题、公司名称、薪资范围以及其他感兴趣的字段。注意每次翻页后都需要适当等待一段时间确保新内容已加载完毕再继续下一步操作。
```python
data_list = []
for page_num in range(1, min(total_pages + 1, 5)): # 示例仅读取前几页作为演示目的
soup = BeautifulSoup(driver.page_source, 'html.parser')
job_items = soup.select('.j_joblist li')
for item in job_items:
title = item.select_one('.e a').get_text(strip=True)
company = item.select_one('.company_name a').get_text(strip=True)
salary = item.select_one('.sal').get_text(strip=True) if item.select_one('.sal') else ''
data_dict = {
'Title': title,
'Company': company,
'Salary': salary
}
data_list.append(data_dict)
next_button = driver.find_element(By.LINK_TEXT, str(page_num + 1))
next_button.click()
time.sleep(random.uniform(1, 3)) # 添加随机延迟防止被封禁IP地址
df = pd.DataFrame(data_list)
print(df.head())
```
#### 关闭浏览器会话
当所有所需的信息都被成功捕获之后,记得关闭打开过的浏览器窗口释放资源。
```python
driver.quit()
```
阅读全文
相关推荐













