scrapy爬虫boss直聘网
时间: 2024-12-29 21:18:47 浏览: 40
### 使用 Scrapy 框架编写爬虫程序抓取 Boss 直聘网信息
#### 创建项目结构
为了创建一个新的 Scrapy 项目,可以执行如下命令:
```bash
scrapy startproject bosszhipin
cd bosszhipin
```
这会初始化一个名为 `bosszhipin` 的新目录,其中包含了基本的文件夹和配置文件。
#### 定义 Spider 类
在 Spiders 文件夹内定义具体的爬虫逻辑。对于 Boss 直聘网站来说,通常需要处理登录验证等问题。这里提供了一个简单的 spider 实现方式:
```python
import scrapy
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options as ChromeOptions
class BossZhiPinSpider(scrapy.Spider):
name = "boss_zhipin"
allowed_domains = ["www.zhipin.com"]
def __init__(self, *args, **kwargs):
super(BossZhiPinSpider, self).__init__(*args, **kwargs)
chrome_options = ChromeOptions()
chrome_options.add_argument('--headless')
self.driver = webdriver.Chrome(options=chrome_options)
def start_requests(self):
urls = [
'https://www.zhipin.com/job_detail/?query=Python&city=101010100',
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
self.driver.get(response.url)
job_listings = self.driver.find_elements(By.CSS_SELECTOR, '.job-list .info-primary')
items = []
for listing in job_listings:
item = {}
try:
title_element = listing.find_element(By.TAG_NAME, 'a').find_element(By.TAG_NAME,'h3')
salary_element = listing.find_element(By.CLASS_NAME, 'red')
item['title'] = title_element.text.strip() if title_element else None
item['salary'] = salary_element.text.strip().replace('k', '') if salary_element else None
items.append(item)
except Exception as e:
print(f"Parsing error {e}")
return items
def closed(self, reason):
self.driver.quit()
```
此代码片段展示了如何利用 Selenium 和 Scrapy 结合的方式访问网页并提取所需数据[^2]。注意,在实际应用中可能还需要考虑反爬机制、动态加载页面等内容。
#### 设置中间件
为了让 Scrapy 能够更好地与 Selenium 协同工作,可以在项目的 settings.py 中添加自定义下载器中间件:
```python
DOWNLOADER_MIDDLEWARES = {
'scrapy_selenium.SeleniumMiddleware': 800,
}
```
同时安装必要的依赖包:
```bash
pip install scrapy-selenium
```
通过这种方式,能够更方便地操作浏览器实例完成复杂的交互任务。
阅读全文
相关推荐

















