本帖最后由 double07 于 2021-4-6 21:29 编辑
[Python] 纯文本查看 复制代码 import random
import time
import scrapy
from job.items import JobItem # 导入items中招聘各标签的建模
class LiepinSpider(scrapy.Spider):
name = 'liepin'
# 2.检查allowed_domains
allowed_domains = ['www.liepin.com']
# 1.修改URL
start_urls = [
'https://www.liepin.com/zhaopin/?compkind=&dqs=&pubTime=3&pageSize=40&salary=30%24&compTag=&sortFlag=15°radeFlag=0&compIds=&subIndustry=&jobKind=&industries=200&compscale=&key=分析&curPage=0']
def parse(self, response):
# 提取数据
# 获取所有职位节点列表
node_list = response.xpath('//ul[@class="sojob-list"]/li')
# 遍历节点列表
for node in node_list:
item = JobItem()
item['name'] = node.xpath('./div/div[1]/h3/a/text()').extract_first().strip()
item['company'] = node.xpath('./div/div[2]/p[1]/a/text()').extract_first().strip()
item['address'] = node.xpath('.//*[@class="area"]/text()').extract_first().strip()
item['salary'] = node.xpath('./div/div[1]/p[1]/span[1]/text()').extract_first().strip()
item['date'] = node.xpath('./div/div[1]/p[2]/time/text()').extract_first().strip()
item['link'] = node.xpath("./div/div/h3/a/@href").extract_first().strip()
if 'https://www.liepin.com' not in node_list:
item['link'] = response.urljoin(node.xpath("./div/div/h3/a/@href").extract_first().strip())
else:
item['link'] = node.xpath("./div/div/h3/a/@href").extract_first().strip()
yield item
# 构建详情页面请求
#yield scrapy.Request(
#url=item['link'],
#callback=self.parse_detail,
#dont_filter=True,
#meta={'item': item}
#)
#def parse_detail(self, response):
#item = response.meta['item']
#item['duty'] = response.xpath('//div[@class="content content-word"]/text()').extract()
#print(item)
把上述代码37-49行注释掉,运行代码正常,去掉注释,就出现下列错误提示:
方法试过很多,没办法解决,请大佬指点。主要目的是把两个页面的数据通过meta拼接在一起,但拼接代码写好,就出现重定向的提示 |