如何从datafram为scrapy中的每个start\u url分配一个ID

2024-04-19 14:17:07 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有这样一个数据帧:

 id     url
 1      www.google.com
 2      www.youtube.com
 3      www.google.com
 4      wwww.facebook.com

如果我想迭代数据帧中的每个url。所以我要做的是:

start_urls = list(df['url'])

def parse(self,response):
    thing = response.css("*").extract()
    item = scrapyItem()
    item['content'] = thing
    yield item

它将遍历我的URL,并为每个URL生成一个项目。问题是,对于生成的文件,我无法区分不同的id。你知道吗

URL不是唯一的,我不能将URL指定为“id”,我需要数据框中的“id”列与URL结合以生成唯一的id。迭代URL时如何访问id列?或者,我可以采取什么其他方法来实现我想要的?你知道吗

编辑:我试图保存为一个“id”的网址,但这不工作,因为网址不是唯一的,刮也工作异步,所以项目的顺序将不会保持不变。你知道吗


Tags: 数据项目comidurlfacebookyoutuberesponse
2条回答

尽管有重复的URL,我仍然可以使用“响应.url“作为一个身份证,尽管有重复的记录。重复的记录将返回相同的响应,因此我可以返回到我的数据帧并将相同的信息附加到我拥有该ID的每个地方

你可以试试iterrows

for index, row in df.iterrows():
    print(index, row['url'])
    parsed_response = parse(response)
    df.loc[index, 'scrapy_content'] = parsed_response

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.iterrows.html

相关问题 更多 >