python scrapy框架最后爬取的结果在哪儿看到_使用Python的Scrapy框架爬取51job职位和分析...

import re

import scrapy

from bs4 import BeautifulSoup

from items import Job51Item

class Myspider(scrapy.Spider):

name = 'job51'

allowed_domains = ['51job.com']

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}

def start_requests(self):

for i in range(1, 208):

url_1 = 'http://search.51job.com/list/000000,000000,0000,00,9,99,%25E6%2595%25B0%25E6%258D%25AE%25E5%2588%2586%25E6%259E%2590%25E5%25B8%2588,2,'

url_2 = '.html?lang=c&stype=1&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=1&dibiaoid=0&address=&line=&specialarea=00&from=&welfare='

url = url_1 + str(i) + url_2

yield scrapy.Request(url, headers=self.headers, callback=self.parse)

#获取每个职位的详细信息入口url

def parse(self, response):

soup = BeautifulSoup(response.text, 'lxml')

tls = soup.find_all('p', class_='t1 ')

for tl in tls:

url = tl.find('a', target='_blank')['href']

yield scrapy.Request(url, callback=self.get_content, meta={'url': url})

#用BeautifulSoup爬取详细页字段

def get_content(self, response):

soup = BeautifulSoup(response.text, 'lxml')

item = Job51Item()

item['zhiwei'] = soup.find('h1').get_text().replace('\xa0', '')

item['gongsi'] = soup.find('p', class_='cname').find('a', target='_blank').get_text().replace('\xa0', '')

item['didian'] = soup.find('span', class_='lname').get_text().replace('\xa0', '')

item['xinzi'] = soup.find('div', class_='cn').find('strong').get_text().replace('\xa0', '')

gongsixinxi = soup.find('p', class_='msg ltype').get_text().replace('\t', '').replace('\r', '').replace('\n', '').replace('\xa0', '')

item['gongsileixing'] = gongsixinxi.split('|')[0]

item['guimo'] = gongsixinxi.split('|')[1]

item['hangye'] = gongsixinxi.split('|')[2]

zhaopinyaoqiu = soup.find('div', class_='t1').get_text().replace('\xa0', '')

item['jingyan'] = zhaopinyaoqiu.split('\n')[1]

try:

item['xueli'] = re.findall(r'(.*?)', response.text)[0]

except:

item['xueli'] = '无'

try:

item['fuli'] = soup.find('p', class_='t2').get_text().replace('\n', ' ').replace('\xa0', '')

except:

item['fuli'] = '无'

item['zhiweiyaoqiu'] =

re.findall(r'<

div class="bmsg job_msg inbox">(.*?)

', response.text, re.I|re.S|re.M)[0].replace('\r', '').replace('\n', '').replace('\t', '').replace('\xa0', '').replace('
', '').replace('
', '')

item['lianjie'] = response.meta['url']

yield item

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Scrapy框架爬取智联招聘网站职位信息的示例代码: 1. 创建Scrapy项目 在命令行中输入以下命令,创建一个名为`zhaopin`的Scrapy项目: ``` scrapy startproject zhaopin ``` 2. 创建爬虫文件 在项目根目录下,使用以下命令创建一个名为`zhaopin_spider`的爬虫文件: ``` scrapy genspider zhaopin_spider sou.zhaopin.com ``` 3. 修改爬虫代码 打开`zhaopin_spider.py`文件,将其修改为以下代码: ```python import scrapy class ZhaopinSpiderSpider(scrapy.Spider): name = 'zhaopin_spider' allowed_domains = ['sou.zhaopin.com'] def start_requests(self): # 设置请求URL url = 'https://sou.zhaopin.com/?jl=530&kw=Python&kt=3' # 发送请求 yield scrapy.Request(url, callback=self.parse) def parse(self, response): # 获取职位列表 job_list = response.xpath('//div[@class="joblist-box__item"]') # 遍历职位列表,获取职位信息 for job in job_list: # 获取职位名称 job_name = job.xpath('.//div[@class="joblist-box__jobname"]/text()') # 获取公司名称 company_name = job.xpath('.//div[@class="joblist-box__companyname"]/text()') # 获取工作地点 location = job.xpath('.//div[@class="joblist-box__jobarea"]/text()') # 获取薪资范围 salary = job.xpath('.//span[@class="joblist-box__salary"]/text()') # 获取职位链接 job_link = job.xpath('.//a[@class="joblist-box__jobname"]/@href') # 输出职位信息 yield { '职位名称': job_name.extract_first().strip(), '公司名称': company_name.extract_first().strip(), '工作地点': location.extract_first().strip(), '薪资范围': salary.extract_first().strip(), '职位链接': job_link.extract_first().strip() } ``` 在`start_requests`方法中,我们设置了请求URL,并使用`scrapy.Request`发送请求。在`parse`方法中,我们使用XPath表达式获取职位信息,并使用`yield`输出结果。 4. 运行爬虫 在命令行中,进入项目根目录,输入以下命令运行爬虫: ``` scrapy crawl zhaopin_spider -o result.json ``` 其中,`-o result.json`表示将结果保存到名为`result.json`的文件中。 需要注意的是,Scrapy框架会自动处理反爬虫机制,但是也需要注意一些规则,如请求频率等。另外,在爬取数据时,可以使用Scrapy提供的一些中间件,如随机User-Agent、自动重试等,以提高爬取效率和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值