使用scrapy爬取前程无忧51job网站

本文分享了一种爬取51job网站职位信息的方法,包括处理JavaScript动态加载内容、利用正则表达式提取JSON数据、使用Scrapy框架进行数据抓取及存储至MongoDB的过程。

讲下爬前程的思路吧:
1.首先最先想到的就是在下图页面,通过response去获定位Xpath路径来得到值在这里插入图片描述
2.当我去获取class=‘e’ 对应的值发现不是我想要的,往class='t’下方的span时取不到值,返回空列表
在这里插入图片描述
3. 这时在网页上右键查看源码,发现class=‘e’得到的值在这,继续往下看发现我们想要的值在javascript中
在这里插入图片描述
在这里插入图片描述
4.我尝试的点击了第二页获取请求的地址,想尝试的能否获取一个纯json的网址,发现进到的还是第二页的主界面,并没有网址中包含纯json的文本
在这里插入图片描述
在这里插入图片描述
4. 那就只能想办法从前面的网页源码中获取内容了,这也是前程的反爬措施,想了挺久的,知道怎么去实现苦于没有方法,后面看到一位博主的方法存html文件,利用正则去匹配我们想要的内容,我们想要的内容其实是一串json赋予了一个变量window.SEARCH_RESULT 。利用json的方法将字符串转成字典。后续的操作就容易多了




5. 在页面上我们可以获取到详细信息的url值
在这里插入图片描述
6. 然后通过scrapy.Request 中callback,利用新定义的方法请求这个url地址去解析响应的文本内容



7. 然后通过父级标签获取子标签的所有内容(找了好久得到了个方法,挺实用的)可以参考父级获取子标签的所有文本内容

父级获取子标签的所有文本内容

在这里插入图片描述
9. 最后就是构造下一页的url,实现翻页的功能

之前脑子好像有点不好使一直忘记开管道了,导致一直没有保存数据,所以注意一定要开管道设置

附上代码:
spider主程序的py文件

# -*- coding: utf-8 -*-
import scrapy
import json
import re
from scrapy import *

class Job51Spider(scrapy.Spider):
    name = 'Job51'
    allowed_domains = ['jobs.51job.com', 'search.51job.com']
    url = 'https://search.51job.com/list/040000,000000,0000,00,9,99,java,2,{}.html?'
    page = 1
    start_urls = [url.format(
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值