Я настраиваю базу данных PDF для веб-страницы, над которой я работаю, и мне нужно отсканировать веб-страницу, похожую на этот список словарей:
- Dictonary 1
- Имя: Алиса
- Фамилия: Смит
- Дополнительная информация: Адрес1
- Информация: (www.url.com) -> Мне нужно перейти по этой ссылке, разобрать ее содержаниеи добавьте информацию в этот словарь
- Словарь 2
- Имя: Боб
- Фамилия: Baggings
- Дополнительная информация: Адрес
- Информация: (www.url.com) -> Мне нужно перейти по этой ссылке, разобрать ее содержимое и добавить информацию в этот словарь
- Словарь n
- Имя: Имя
- Фамилия: Фамилия
- Дополнительная информация: Адрес
- Информация: (www.url.com) -> Мне нужноперейти по этой ссылке, разобрать ее содержимое и добавить информацию в этот словарь
и так далее, и тому подобное. Как я могу сделать это с помощью скрапа?
import scrapy
class SpiderDoesThings(scrapy.Spider):
name = 'my_name'
start_urls = [my_urls]
def parse(self, response):
for item in response.css(filter1):
link = item.css(filter2)
meta_data = {
'name': item.css(filter3)
}
yield scrapy.Request(url=link, callback=self.parse_additionalinfo, meta=meta_data)
def parse_additionalinfo(self, response):
response.meta.update({'mynewinfo': response.css(filter4)
yield response.meta
Код возвращает только первый словарь списка:
- Dictonary 1
- Имя: Алиса
- Фамилия: .. .
- Дополнительная информация: ...
- Информация: (ссылка) -> Мне нужно перейти по этой ссылке и добавить информацию в этот словарь
Я попытался добавить «no-filter = True», и он просканировал остальную часть списка, но он продолжал сканировать ту же дополнительную информацию. «Имя», «Фамилия» и «Больше информации» были правильными. Что-то вроде:
- Диктонар 1
- Имя: Алиса
- Фамилия: Смит
- Дополнительная информация: Адрес1
- Информация:parsed_info1
- Словарь 2
- Имя: Боб
- Фамилия: Baggings
- Дополнительная информация: Адрес
- Информация: parsed_info1
- Словарь n
- Имя: Имя
- Фамилия: Фамилия
- Дополнительная информация: Адрес
- Информация: parsed_info1