xpath().extract()[0]解析

item['name'] = each.xpath("./a/text()").extract()[0]

each                               html文档

each.xpath("./a/text()")  xpath解析返回的是一个选择器列表

extract()                         转换为Unicode字符串

[0]                                  列表第一个位置    

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据你提供的代码和报错信息,我猜测可能是你的项目结构和文件命名有问题。建议你按照 Scrapy 官方文档的要求进行项目创建和文件命名,比如: 1. 项目名应该是一个有效的 Python 标识符,建议使用小写字母和下划线,比如 `myproject`。 2. Spider 类的文件名应该与 Spider 类的 `name` 属性相同,比如 `ygspider.py`。 3. Items 类的文件名应该是 `items.py`。 具体的代码实现如下: `myproject/spiders/ygspider.py` ```python import scrapy from myproject.items import YgItem class YgSpider(scrapy.Spider): name = "ygspider" allowed_domains = ["sun0769.com"] start_urls = ["https://wz.sun0769.com/political/index/politicsNewest?id=1&page=1"] def parse(self, response): lilist = response.xpath('//ul[@class="title-state-ul"]/li') for li in lilist: item = YgItem() item['id'] = li.xpath('./span[1]/text()').extract_first() item['status'] = li.xpath('./span[2]/text()').extract_first() item['title'] = li.xpath('./span[3]/a/text()').extract_first() infohref = 'https://wz.sun0769.com' + li.xpath('./span[3]/a/@href').extract_first() item['retime'] = li.xpath('./span[4]/text()').extract_first() item['asktime'] = li.xpath('./span[5]/text()').extract_first() # 解析详情页 yield scrapy.Request(url=infohref, callback=self.parseinfo, meta={'item': item}) # 翻页 next_page = response.xpath('//[@class="arrow-page prov_rota"]/@href').extract_first() if next_page: next_page = 'https://wz.sun0769.com' + next_page yield scrapy.Request(url=next_page, callback=self.parse) def parseinfo(self, response): item = response.meta['item'] yield item ``` `myproject/items.py` ```python import scrapy class YgItem(scrapy.Item): id = scrapy.Field() status = scrapy.Field() title = scrapy.Field() retime = scrapy.Field() asktime = scrapy.Field() content = scrapy.Field() ``` 建议你按照上述方式进行代码重构,然后再运行一下看看是否能够正常抓取数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值