如何在Python中为scrapy bot剥离具有不同目的的字符串?

时间:2015-07-09 02:33:07

标签: python string web-scraping scrapy scrapy-spider

我正在建造一个scrapy蜘蛛,但需要有效和正确的方法来剥离包含url的字符串。网址始终以 [' u 开头,以' 结尾 例如[u' http://example.com/2334878']

def parse(self, response):
    for sel in response.xpath("//div[@class='category']/a"):
        item = SpiderItem()
        item['title'] = sel.xpath('text()').extract()
        item['link'] = sel.xpath('@href').extract()
        linkToPost = str(item['link'])
        linkToPost = linkToPost.strip("['u")
        linkToPost = linkToPost.replace("'", "")
        linkToPost = linkToPost.replace("]", "")
        print linkToPost
        #Parse request to follow the posting link into the actual post
        request = scrapy.Request(linkToPost , callback=self.parse_item_page)
        request.meta['item'] = item
        yield request

1 个答案:

答案 0 :(得分:1)

这是因为extract()会返回列表

  

extract()

     

序列化并返回匹配的节点作为列表   unicode字符串。编码内容百分比不加引号。

最多"克莱克"这里的方法是使用ItemLoaderTakeFirstJoin处理器。

或者,只需从列表中获取第一个元素:

item['title'] = sel.xpath('text()').extract()[0]
item['link'] = sel.xpath('@href').extract()[0]