我对使用Scrapy或python相对较新.我想从几个不同的链接中提取,我在使用HTMLXPathSelector表达式(语法)时遇到问题.我已经查看了大量文档以了解正确的语法,但尚未找到解决方案.
这是我试图从中提取'img src'的链接示例:
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
Run Code Online (Sandbox Code Playgroud)
我想我已经找到了x.select语句的语法,但是,因为我是这个语法/方法的新手,我不确定.
这是我的items.py文件,基本上遵循scrapy教程:
from scrapy.item import Item, Field
class GeekItem(Item):
imgsrc = Field()
Run Code Online (Sandbox Code Playgroud)
澄清一下:我要做的是提取页面上的img src url.我不需要提取我已经想到的所有图像src(更容易).
我只是想缩小范围,只提取img src的特定网址.(我将在本网站的多个页面上使用此功能)
任何帮助是极大的赞赏!
编辑 - 更新的代码我在geek = geek()中遇到了一些语法错误所以我稍微改了一下,希望更容易理解和运行
到目前为止,我已经尝试了几种不同的方法来解决这个问题.我收到此错误消息:
'where子句'中的未知列'Array'
SELECT*FROM(Articles)WHERE idIN(Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array, Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array,Array)
这是我的型号代码:
function getStarNews($user_id) {
$this->db->select('id');
$this->db->where('user_id', $user_id);
$query = $this->db->get('table1');
foreach ($query->result_array() as $id)
{
//echo $id['id']."<br>"; //displays all of the correct ids I am trying to pass to the where_in()
}
$id = $query->result_array();
$this->db->where_in('id', $id); //pass array of 'id' from above query
$data = $this->db->get('Articles');
return $data->result_array();
}
Run Code Online (Sandbox Code Playgroud)
如果我改变id数组只包含1个值,那么where_in()子句工作正常并输出匹配单个'id'的数据行.
我已经遍布堆栈和谷歌寻求使用where_in()的帮助,我认为我已经有了一切正确或尝试了几种不同的方法来正确传递数组.
谢谢您的帮助.
编辑:最后我将使用我的控制器输出这些数据:
$this->output->set_output(json_encode($data));
Run Code Online (Sandbox Code Playgroud)
出于测试目的,我只是跳过JSON并尝试直接从模型中使用PHP输出数据.