scrapy 重定向困惑?
本帖最后由 double07 于 2021-4-6 21:29 编辑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/h3/a/text()').extract_first().strip()
item['company'] = node.xpath('./div/div/p/a/text()').extract_first().strip()
item['address'] = node.xpath('.//*[@class="area"]/text()').extract_first().strip()
item['salary'] = node.xpath('./div/div/p/span/text()').extract_first().strip()
item['date'] = node.xpath('./div/div/p/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拼接在一起,但拼接代码写好,就出现重定向的提示 看着好像被反爬了? 有点迷,注释不是不运行么,怎么有注释和没注释是两个结果 luanshils 发表于 2021-4-6 23:05
有点迷,注释不是不运行么,怎么有注释和没注释是两个结果
把注释注掉,就能把多页面数据链接在一起了,但问题就出这,出现重定向提示 double07 发表于 2021-4-6 23:08
把注释注掉,就能把多页面数据链接在一起了,但问题就出这,出现重定向提示
我理解错了 你对scrapy的理解有问题,你在parse yield item,为什么要在这里构造新的请求? super.me 发表于 2021-4-7 12:11
你对scrapy的理解有问题,你在parse yield item,为什么要在这里构造新的请求?
漏说了一句,如果去掉最后两段的注释,前提是把parse yield item先注释
页:
[1]