Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Scrapy:制作循环以将一项添加到其他值_Python_Scrapy - Fatal编程技术网

Python Scrapy:制作循环以将一项添加到其他值

Python Scrapy:制作循环以将一项添加到其他值,python,scrapy,Python,Scrapy,我正在使用scrapy刮取一些页面,我希望在每一行中: 头衔 网址 作者 问题是(有时)有更多的标题和URL,但作者在每个页面中只出现一次。因此,我想将各自的作者添加到URL和标题中(结果很好) 这是我的(糟糕的)代码,我尝试了一个循环,但我认为它没有很好地工作,另外,它引发了一个错误“Spider必须返回请求、BaseItem、dict或None、get'list”。你能告诉我我的错在哪里吗 def parse(self, response): sels = response.xp

我正在使用scrapy刮取一些页面,我希望在每一行中:

  • 头衔
  • 网址
  • 作者
问题是(有时)有更多的标题和URL,但作者在每个页面中只出现一次。因此,我想将各自的作者添加到URL和标题中(结果很好)

这是我的(糟糕的)代码,我尝试了一个循环,但我认为它没有很好地工作,另外,它引发了一个错误“Spider必须返回请求、BaseItem、dict或None、get'list”。你能告诉我我的错在哪里吗

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