scrapy中文社区

 找回密码
 立即注册
查看: 1954|回复: 0

反扒 post 浏览器可获取数据 scrapy数据为空

[复制链接]

1

主题

1

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2020-3-13 23:13:41 | 显示全部楼层 |阅读模式
目标地址:web/article/128/0/index.htm(不让发链接.........,域名在源文件里)
此网站为post提交,返回html文本,详细的可以看我的代码
想爬取的内容:列表中的项目
问题:scrapy获取的body中没有列表的数据 ul中没有li
曾尝试解决,用cookiejar:True,还是没有数据
希望有能力的小伙伴,能给予一点提示,不胜感激
spider源文件源代码上传到附件了,
  1. # -*- coding: utf-8 -*-
  2. import re

  3. import scrapy
  4. import scrapy_splash
  5. from demo.items import DemoItem
  6. from datetime import datetime


  7. class GgzyfwSpider(scrapy.Spider):
  8.     name = 'gsccgp'
  9.     allowed_domains = []
  10.     start_urls = []
  11.     url = ''

  12.     def get_form_data(self, page):
  13.         payload = {'articleSearchInfoVo.releasestarttime': '',
  14.                    'articleSearchInfoVo.releaseendtime': '',
  15.                    'articleSearchInfoVo.tflag': '1',
  16.                    'articleSearchInfoVo.classname': '128',
  17.                    'articleSearchInfoVo.dtype': '0',
  18.                    'articleSearchInfoVo.days': '',
  19.                    'articleSearchInfoVo.releasestarttimeold': '',
  20.                    'articleSearchInfoVo.releaseendtimeold': '',
  21.                    'articleSearchInfoVo.title': '',
  22.                    'articleSearchInfoVo.agentname': '',
  23.                    'articleSearchInfoVo.bidcode': '',
  24.                    'articleSearchInfoVo.proj_name': '',
  25.                    'articleSearchInfoVo.buyername': '',
  26.                    'total': '5402',
  27.                    'limit': '20',
  28.                    'current': str(page),
  29.                    'sjm': '7466'}
  30.         return payload

  31.     def start_requests(self):
  32.         yield scrapy_splash.SplashFormRequest(method='post', formdata=self.get_form_data(1),
  33.                                               url=self.url, callback=self.parse)

  34.     def parse(self, response):
  35.         tr_list = response.xpath("//ul[@class='Expand_SearchSLisi']/li")
  36.         if not tr_list:
  37.             return
  38.         else:
  39.             pass

  40.         current = self.settings.get('CURRENT_DATA')
  41.         domain = ''
  42.         # 第一个tr是表头
  43.         for li in tr_list:
  44.             date_str = li.xpath("string(.//span[1]//text())").get().strip()

  45.             # 开标时间: | 发布时间:2020-03-12 20:41:01 | 采购人:平凉市崆峒区白水镇人民政府 | 代理机构:甘肃海天建设工程造价咨询有限公司
  46.             date_arr = date_str.split('|')
  47.             date = date_arr[1].split(':')[1].strip()
  48.             buy_person = date_arr[2].split(':')[1].strip()
  49.             middle_name = date_arr[3].split(':')[1].strip()
  50.             if date:
  51.                 # project_time
  52.                 date_time = datetime.strptime(date, "%Y-%m-%d %H:%M:%S")

  53.                 now_time = datetime.now()

  54.                 diff_day = (now_time - date_time).days

  55.                 if diff_day > current:
  56.                     # 因为还要处理图片所以不能停止爬虫,停止了图片就也不处理了
  57.                     # self.crawler.engine.close_spider(self, '日期过了')
  58.                     # print('>>>>>日期过了')
  59.                     return
  60.                 else:
  61.                     # print('>>>>>可以继续')
  62.                     pass
  63.                 item = DemoItem()
  64.                 item['publish_date'] = date
  65.                 item['source_url'] = self.start_urls[0]
  66.                 item['project_name'] = li.xpath(".//a//text()").get()
  67.                 href = li.xpath('.//a/@href').get()
  68.                 item['url'] = domain + href

  69.                 # 废标/终止公告 | 平凉市崆峒区白水镇人民政府 | 农、林、牧、渔业
  70.                 other_str = li.xpath("string(.//span/strong//text())").get().strip()
  71.                 other_arr = other_str.split('|')
  72.                 item['status'] = other_arr[0].strip()
  73.                 item['buy_area'] = other_arr[1].strip()
  74.                 item['project_type_name'] = other_arr[2].strip()
  75.                 item['buy_person'] = buy_person
  76.                 item['middle_name'] = middle_name
  77.                 print(item)
  78.                 # yield item

  79.         depth = response.meta.get('depth', 0)
  80.         page = depth + 1
  81.         url = domain + '/web/doSearchmxarticle.action?limit=20&start=' + str(page * 20)
  82.         yield scrapy.Request(url=url, callback=self.parse)
复制代码



我本来直接打算传py文件结果发现不让传,改成gif了,还得麻烦改一下后缀,
这论坛我也是服了,链接不让放,源码放不上来,附件还不让传...........
真的服了.............发呆吗提示不让发链接,发附件,提示不让带py后缀的,那我怎么描述问题????

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

网站出错
在线咨询
邮箱
bbs@scrapyd.cn
微信扫一扫
关注公众号

Archiver|手机版|scrapy中文社区

GMT+8, 2020-8-15 18:25

Powered by Discuz  2.5

快速回复 返回顶部 返回列表