import scrapy
from ajk.items import AjkItem
class AjkDataSpider(scrapy.Spider):
name = 'ajk_data'
#allowed_domains = ['suzhou.anjuke.com']
start_urls = ['https://suzhou.anjuke.com/sale/gaoxinsz/']
#高新区一级解析 获取
def parse(self, response):
#解析:名称和内容
li_list = response.xpath('//ul[@id="houselist-mod-new"]/li')
#all_data = []#存储所有解析到数据
for li in li_list:
item = AjkItem()
item['house_type'] = li.xpath('./div[2]/div[2]/span[1]/text()').extract() #房屋户型
item['floorage'] = li.xpath('./div[2]/div[2]/span[2]/text()').extract() #建筑面积
item['storey'] = li.xpath('./div[2]/div[2]/span[3]/text()').extract() #所在楼层
item['Construction_time'] = li.xpath('./div[2]/div[2]/span[4]/text()').extract() #建筑时间
item['Total_price'] =li.xpath('./div[3]/span[1]/strong/text()').extract() #房屋总价
li_url = li.xpath('./div[2]/div[1]/a/@href').extract()[0] #这个地方爬取url内容会自动多出很多不存在字符
print(li_url)
yield scrapy.Request(url=li_url,meta={'item':item},callback=self.parse_two)
#详细页解析
def parse_two(self, response):
item = response.meta['item']
item['Unit_Price'] =response.xpath('//*[@id="content"]/div[3]/div[1]/div[3]/div/div[1]/ul/li[3]/div[2]/text()').extract()
item['community'] = response.xpath('//*[@id="content"]/div[3]/div[1]/div[3]/div/div[1]/ul/li[1]/div[2]/a/text()').extract()
item['position'] = response.xpath('//*[@id="content"]/div[3]/div[1]/div[3]/div/div[1]/ul/li[4]/div[2]/p/a[2]/text()').extract()
item['House_category'] = response.xpath('//*[@id="content"]/div[3]/div[1]/div[3]/div/div[1]/ul/li[10]/div[2]/text()').extract()
item['property_right'] = response.xpath('//*[@id="content"]/div[3]/div[1]/div[3]/div/div[1]/ul/li[13]/div[2]/text()').extract()
item['renovation'] = response.xpath('//*[@id="content"]/div[3]/div[1]/div[3]/div/div[1]/ul/li[12]/div[2]/text()').extract()
item['Housing_years'] = response.xpath('//*[@id="content"]/div[3]/div[1]/div[3]/div/div[1]/ul/li[15]/div[2]/text()').extract()
yield item
Li_url 列表内容是这样的
这个到导致我的parse_two 里边的标签内容获取不到
问题1:我这个获取不到数据是否是这个原因引起
问题2:如果是 是我编写代码问题吗
问题3:li_url 列表中的网址,只是提取‘?’之前数据,再存储 这个提取怎样操作,谢谢