gpt4 book ai didi

python - Scrapy - 使用 xPathSelector 提取嵌套的 'img src'

转载 作者:太空狗 更新时间:2023-10-30 00:11:34 25 4
gpt4 key购买 nike

我对使用 Scrapy 或 python 比较陌生。我希望从几个不同的链接中提取,但在使用 HTMLXPathSelector 表达式(语法)时遇到问题。我已经查看了大量文档以了解正确的语法,但尚未找到解决方案。

这是我尝试从中提取“img src”的链接示例:

Page I am trying to extract the img src url from

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector

class GeekSpider(BaseSpider):
name = "geekS"
allowed_domains = ["geek.com"]
start_urls = ["http://www.geek.com/articles/gadgets/kindle-fire-hd-8-9-on-sale-for-50-off-today-only-20121210/"]

def parse(self, response):
hxs = HtmlXPathSelector(response)
imgurl = hxs.select("//div[@class='article']//a/img/@src").extract()
return imgurl

我想我已经弄清楚了 x.select 语句的语法,但是,由于我是这种语法/方法的新手,所以我不确定。

这是我的 items.py 文件,基本上遵循了 scrapy 教程:

from scrapy.item import Item, Field

class GeekItem(Item):
imgsrc = Field()

澄清一下:我要做的是提取页面上的 img src url。我不需要提取我已经弄清楚的所有图像 src(更容易)。

我只是想缩小范围,只提取 img src 的特定 url。 (我将在本网站的多个页面上使用它)

非常感谢任何帮助!

编辑 - 更新代码 我在使用 geek = geek() 时遇到了一些语法错误所以我稍微更改了它以希望更容易理解和运行

最佳答案

我相信您的 xpath 表达式应该更像这样。我在另一个页面 (the Amazon shipping center article) 上对其进行了测试,它返回了所有十个可点击的图像。

geek['imgsrc'] = x.select("//div[@class='article']//a/img/@src").extract()

要解决您的其他问题,您需要将 GeekItem 导入到您的 GeekSpider 代码中。

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from geekspider.items import GeekItem # I'm guessing the name of your project here

class GeekSpider(BaseSpider):
name = "geekS"
allowed_domains = ["geek.com"]
start_urls = ["http://www.geek.com/articles/gadgets/kindle-fire-hd-8-9-on-sale-for-50-off-today-only-20121210/"]

def parse(self, response):
item = GeekItem()
hxs = HtmlXPathSelector(response)
item['imgsrc'] = hxs.select("//div[@class='article']//a/img/@src").extract()
return item

关于python - Scrapy - 使用 xPathSelector 提取嵌套的 'img src',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13888673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com