小编Mar*_*cus的帖子

Scrapy:修改响应中的元素和字段

我对Scrapy,Python和面向对象编程比较陌生,所以如果我的术语不正确或者不清楚,我会道歉.

我正在尝试编写一个蜘蛛,当它从响应中抓取项目时,也会创建一个修改版本的响应以保存到文件.例如,我正在尝试更改'src'链接以指向本地保存的已删除文件.

目前,我正在使用Scrapy的选择器抓取数据并使用lxml修改响应.但是,我想使用Scrapy的方法来代替lxml进行修改,因为使用Scrapy选择器和lxml意味着基本上将代码加倍以在响应中定位相同的元素.

我在下面添加了一些代码来说明我的观点.一切都发生在蜘蛛解析功能中.

def解析(自我,回应):

    # Scrape thumbnail URLs using Scrapy selectors
    for post in response.css('.post'): # For each post
        for thumb in post.css('.thumb'): # For each thumbnail
            item = Item() # Create an image item
            item['thumbnail_url'] = []
            item['thumbnail_savepath'] = []
            for x in thumb.xpath('img/@src').extract():
                thumbnail_url = 'https:' + x
                thumbnail_filename = re.search('.*/(.*)', thumbnail_url).group(1)
                thumbnail_savepath = 'thumbnails/' + thumbnail_filename
                item['thumbnail_url'] += [thumbnail_url]
                item['thumbnail_savepath'] += [thumbnail_savepath]

    # Make modified html using lxml
    body_lxml = lxml.html.document_fromstring(response.body)
    for thumbnail in body_lxml.xpath('//img'):
        thumbnail_src …
Run Code Online (Sandbox Code Playgroud)

python lxml scrapy python-2.7

5
推荐指数
1
解决办法
849
查看次数

标签 统计

lxml ×1

python ×1

python-2.7 ×1

scrapy ×1