爬虫项目——Scrapy爬取Boss直聘

本文介绍了一个Windows环境下使用PyCharm和Python 3.6进行的Scrapy爬虫项目,旨在爬取Boss直聘网站的数据。内容包括项目创建、items定义、Spider的设置、Middleware中添加IP代理以随机更换,以及Pipeline整合MongoDB进行数据存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Scrapy添加代理爬取boss直聘,并存储到mongodb

最终爬取截图

在这里插入图片描述

项目创建

本项目使用的是Windows系统下的Pycharm平台,Python版本为3.6

使用scrapy startproject scrapy_boss创建scrapy项目

items

from scrapy import Item, Field

class BossItem(Item):
    company_name = Field()  #公司名称
    company_status = Field()  #公司规模
    company_address = Field()  #公司地址

    job_title = Field()  #职位名称
    job_salary = Field()  #薪酬
    job_detail = Field()  #职位描述、详情要求

    job_experience = Field()  #工作经验
    job_education = Field()  #学历要求
    job_url = Field()  #发布页面

Spider

  • 参数
class BossSpider(Spider):
   name = 'boss'
   allowed_domains = ['www.zhipin.com']
   # start_urls = ['http://www.zhipin.com/']

   headers = {
    
    
       'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
       'accept-encoding': 'gzip, deflate, br',
       'accept-language': 'zh-CN,zh;q=0.9',
       'cookie': '__c=1535347437; __g=-; __l=l=%2Fwww.zhipin.com%2Fc101010100%2Fh_101010100%2F%3Fquery%3D%25E7%2588%25AC%25E8%2599%25AB%25E5%25B7%25A5%25E7%25A8%258B%25E5%25B8%2588%26page%3D4%26ka%3Dpage-4&r=; Hm_lvt_194df3105ad7148dcf2b98a91b5e727a=1533949950,1534555474,1535095432,1535347437; lastCity=101010100; toUrl=https%3A%2F%2Fwww.zhipin.com%2Fjob_detail%2F%3Fquery%3Dpython%26scity%3D101010100%26industry%3D%26position%3D; JSESSIONID=""; Hm_lpvt_194df3105ad7148dcf2b98a91b5e727a=1535348378; __a=5534803.1512627994.1535095432.1535347437.264.8.4.260',
       'referer': 'https://www.zhipin.com/job_detail/?query=python&scity=101010100&industry=&position=',
       'upgrade-insecure-requests': '1',
       'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
   }
  • 解析index页
    
### 使用Scrapy框架爬取Boss站信息 #### 准备工作 为了成功利用Scrapy框架爬取Boss站的信息,需先安装并配置好Python环境以及Scrapy库。确保已正确安装Scrapy版本,并熟悉基本命令操作。 #### 创建项目结构 启动一个新的Scrapy项目用于处理此次任务: ```bash scrapy startproject boss_zhipin_spider cd boss_zhipin_spider ``` 接着,在`spiders`文件夹内新建具体的Spider类来定义目标页的解析逻辑[^3]。 #### 设置请求头 由于现代Web应用通常会检测访问者的User-Agent等HTTP头部字段以防止自动化工具滥用API接口或模拟浏览器行为不当,因此建议在项目的`settings.py`里适当调整默认发送出去的Headers参数,使其更接近真实用户的浏览习惯[^4]: ```python USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' ROBOTSTXT_OBEY = False DOWNLOAD_DELAY = 3 CONCURRENT_REQUESTS_PER_DOMAIN = 8 COOKIES_ENABLED = True DEFAULT_REQUEST_HEADERS = { 'Accept': '*/*', 'Connection': 'keep-alive', } ``` 这里设置了较为通用的浏览器标识符(User Agent),关闭了对robots.txt规则集的遵循(因为某些站点可能会阻止爬虫活动),增加了下载延迟时间减少服务器压力,限制同一域名下的并发请求数量保护资源不被过度占用,启用了Cookie支持以便维持登录状态或其他依赖于Session机制的功能正常运作。 #### 编写爬虫代码 下面给出一个简单的例子展示如何编写针对特定页面类型的Spider脚本: ```python import scrapy from ..items import BossZhipinItem class JobSpider(scrapy.Spider): name = "jobs" allowed_domains = ["www.zhipin.com"] start_urls = ['https://www.zhipin.com/job_detail/?query=Python&city=101010100'] def parse(self, response): items = [] for sel in response.xpath('//div[@class="job-list"]/ul/li'): item = BossZhipinItem() try: item['title'] = sel.css('a::attr(title)').get().strip() item['salary'] = sel.xpath('.//span[@class="red"]//text()').extract_first('').strip() item['company_name'] = sel.css('.info-company .name a::attr(title)').get().strip() yield item except AttributeError as e: continue next_page_url = response.css('a.next::attr(href)').get() if next_page_url is not None: yield scrapy.Request(response.urljoin(next_page_url)) ``` 上述代码片段实现了对于给定URL列表中的每一页进行遍历读取,并提取出所需的关键属性保存到自定义的数据容器(`BossZhipinItem`)当中;同时还会尝试获取下一页链接继续深入挖掘更多记录到全部完成为止[^1]。 #### 数据存储 最后一步就是考虑怎样持久化收集来的资料了。可以采用多种方式实现这一点,比如接打印输出至控制台、导出JSON/XML文档形式或是接入关系型数据库管理系统(MySQL为例)。具体做法取决于实际应用场景和个人偏好。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值