如何从Python Scrapy中的子URL获取数据

时间:2019-06-04 08:09:36

标签: python-2.7 scrapy

我是新手。

我有一张桌子,

<tr>
 <td>name</td> <td>age</td> <td><a href='link to marks'>marks</a></td>
</tr>
<tr>
 <td>name</td> <td>age</td> <td><a href='link to marks'>marks</a></td>
</tr>
<tr>
 <td>name</td> <td>age</td> <td><a href='link to marks'>marks</a></td>
</tr>....

具有标记的页面上有一个包含标记的<h1 class='marks'>。 我正在循环tr并创建一个item对象, item ['name'] ='td [1]中的名称 item ['age'] ='td [2]中的名称 现在,我需要转到标记链接并获取标记并将其设置为item ['marks']

请帮助我解决这个问题。

1 个答案:

答案 0 :(得分:2)

您可以将yield请求与meta属性一起使用:

def parse(self, response):
    for row in response.xpath('//tr'):
        item = YourItem()
        item["name"] = row.xpath('./td[1]/text()').get()
        item["age"] = row.xpath('./td[2]/text()').get()
        marks_url = row.xpath('./td[3]/a/@href').get()
        yield scrapy.Request(
            url=marks_url,
            meta={"item": item},
            callback=self.parse_marks,
        )

def parse_marks(self, response):
    item = response.meta["item"]
    item["marks] = response.xpath('//your/marks/selector').getall()

    yield item