Python Scrapy:制作循环以将一项添加到其他值
我正在使用scrapy刮取一些页面,我希望在每一行中:Python Scrapy:制作循环以将一项添加到其他值,python,scrapy,Python,Scrapy,我正在使用scrapy刮取一些页面,我希望在每一行中: 头衔 网址 作者 问题是(有时)有更多的标题和URL,但作者在每个页面中只出现一次。因此,我想将各自的作者添加到URL和标题中(结果很好) 这是我的(糟糕的)代码,我尝试了一个循环,但我认为它没有很好地工作,另外,它引发了一个错误“Spider必须返回请求、BaseItem、dict或None、get'list”。你能告诉我我的错在哪里吗 def parse(self, response): sels = response.xp
- 头衔
- 网址
- 作者
def parse(self, response):
sels = response.xpath('//td[@class="default"]')
items = []
for sel in sels:
item = ThisItem()
item['URL'] = sel.xpath('//td[@class]/a/@href').extract()
item['TITLE'] = sel.xpath('//td[@class]/a').extract()
i = item['TITLE']
for i in sels:
item['AUTHOR'] = sel.xpath('//td[@class]/b[1]').extract()
items.append(item)
yield items
提前感谢。您应该分别
生成每个项目。试试这个
def parse(self, response):
author = response.xpath('//td[@class]/b[1]').extract()
for sel in response.xpath('//td[@class="default"]'):
item = ThisItem()
item['URL'] = sel.xpath('//td[@class]/a/@href').extract()
item['TITLE'] = sel.xpath('//td[@class]/a').extract()
item['AUTHOR'] = author
yield item
您应该分别生成每个项目。试试这个
def parse(self, response):
author = response.xpath('//td[@class]/b[1]').extract()
for sel in response.xpath('//td[@class="default"]'):
item = ThisItem()
item['URL'] = sel.xpath('//td[@class]/a/@href').extract()
item['TITLE'] = sel.xpath('//td[@class]/a').extract()
item['AUTHOR'] = author
yield item
已经完成了:它给了我类似的东西:Title-Url-Author;Tilte-Url-空白;标题-网址-空白;Title-Url-Author Ecc.让我看看html页面示例我修复了答案,再次检查。如果作者只来过一次,您应该使用response
对象进行提取,而不是sel
已经完成:它给了我类似的东西:Title-Url-author;Tilte-Url-空白;标题-网址-空白;Title-Url-Author Ecc.让我看看html页面示例我修复了答案,再次检查。如果作者只来过一次,您应该使用response
object进行提取,而不是sel