Как назначить идентификатор для каждого start_url в scrapy из dataframe - PullRequest
0 голосов
/ 06 марта 2019

Допустим, у меня есть такой фрейм данных:

 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-адреса не являются уникальными, и я не могу назначить URL-адрес в качестве «id», мне нужен столбец «id» из моего фрейма данных в сочетании с URL-адресом для создания уникального идентификатора.Как я могу получить доступ к столбцу id при переборе своих URL?Или, в качестве альтернативы, какие другие подходы я мог бы использовать, чтобы добиться того, чего я хочу?

РЕДАКТИРОВАТЬ: я пытался сохранить URL-адрес как «идентификатор», но это не работает из-за того, что URL-адреса не являются уникальными,scrapy также работает асинхронно, поэтому порядок элементов не будет постоянным.

Ответы [ 2 ]

3 голосов
/ 06 марта 2019

Вы можете попробовать 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

0 голосов
/ 06 марта 2019

Несмотря на дубликаты URL, я все еще мог использовать «response.url» в качестве идентификатора, несмотря на дубликаты записей. Дублированные записи независимо от этого будут возвращать один и тот же ответ, и поэтому я могу вернуться к своему фрейму данных и прикрепить одну и ту же информацию к каждому месту, где у меня есть этот идентификатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...