Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 如何在Python Scrapy中从子url获取数据_Python 2.7_Scrapy - Fatal编程技术网

Python 2.7 如何在Python Scrapy中从子url获取数据

Python 2.7 如何在Python Scrapy中从子url获取数据,python-2.7,scrapy,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 mar

我是个新手

我有一张像

<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>....

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


请帮我解决这个问题。

您可以使用
属性为
请求:

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

您可以使用带有
meta
属性的
yield
请求:

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

您可以使用请求的
meta
属性将项目传递给对新请求的响应。您可以使用请求的
meta
属性将项目传递给对新请求的响应。感谢您的回复,我那时是新来的。我要找的是发出一个inline_请求并获得marks元素。我得到了它。我没有想到你提到的这种方法,它非常简单。谢谢你的回复,我那时是新来的。我要找的是发出一个inline_请求并获得marks元素。我得到了它。我没有想到你提到的这种方法,它非常简单。多谢各位