В основном название. По какой -то неизвестной причине у одного из моих пауков возникает проблемы с подключением к URL, когда я добавляю его в свой сценарий, но ни один, если это использует команду Scrapy Crawl на терминале. В обоих случаях я пытаюсь соскрести одинаковое количество данных, используя одинаковые настройки, и я даже пытался удалить других своих пауков из сценария, чтобы увидеть, не мешали ли они друг другу, но не могли его решить. < /p>
Эти два являются примером кодов для моего дефектного паука и моего основного файла < /p>
main: < /p>
import scrapy
from scrapy.utils.project import get_project_settings
from scrapy.crawler import CrawlerProcess
from ProjectFolder import Examplespider1
from ProjectFolder import Examplespider2
if __name__ == "__main__":
shared_data = {
"names": list_of_names,
"results": {
"spider1": {},
"spider2": {},
}
}
search_term = 'example'
settings = get_project_settings()
process = CrawlerProcess(settings)
process.crawl(Examplespider1, shared_data=shared_data, process_name=search_term)
process.crawl(Examplespider2, shared_data=shared_data, process_name=search_term)
process.start()
spider1_results = shared_data["results"]["spider1"]
spider2_results = shared_data["results"]["spider2"]
#do something with the data
< /code>
Проблема Spider: < /p>
import scrapy
class Examplespider1(scrapy.Spider):
name = "spider1"
allowed_domains = ["exampledomain.com"]
start_urls = ["https:exampledomain.com/something"]
def __init__(self, shared_data, process_name, *args, **kwargs):
super().__init__(*args, **kwargs)
self.shared_data = shared_data
self.process_name = process_name
def parse(self, response):
view_state = response.xpath('//input[@name="javax.faces.ViewState"]/@value').get()
if not view_state:
self.log("Não foi possível encontrar javax.faces.ViewState na página inicial.", level=scrapy.log.ERROR)
return
names = self.shared_data["names"]
for name in names:
form_data = {
formdata
}
yield scrapy.FormRequest(
url=self.start_urls[0],
formdata=form_data,
callback=self.parsesearch,
cb_kwargs={'name': name}
)
def parsesearch(self, response, nome_da_parte):
namespaces = {'x': 'http://www.w3.org/1999/xhtml'}
processos = response.xpath(
'//x:tbody[@id="fPP:processosTable:tb"]//x:b[@class="btn-block"]/text()',
namespaces=namespaces
).getall()
self.shared_data["results"]["spider1"][name] = processos
yield {
"Name": name,
"processos": processos,
}
Когда я использую на терминале только паука, я просто комментирую всю функцию инициализации, просто создаю локальную переменную со всеми именами и комментирую части, связанные с общей_датой, но использование локальной переменной для имен в пауке по умолчанию, очевидно, ничего не решило, так что у меня совершенно нет идей по этому поводу.
Не думаю, что это будет особенно полезно, но просто в случае, вот журналы, когда мой паук преуспевает в терминале и когда он происходит сбой в сценарии:
2025-01-23 11:42:38 [scrapy.core.engine] DEBUG: Crawled (200) (referer: None)
ERROR: Gave up retrying (failed 3 times): []
Подробнее здесь: https://stackoverflow.com/questions/793 ... lem-when-d
Scrapy Spider не может подключиться при работе через main, но не имеет проблем, когда это делается через терминал. ⇐ Python
Программы на Python
1737761563
Anonymous
В основном название. По какой -то неизвестной причине у одного из моих пауков возникает проблемы с подключением к URL, когда я добавляю его в свой сценарий, но ни один, если это использует команду Scrapy Crawl на терминале. В обоих случаях я пытаюсь соскрести одинаковое количество данных, используя одинаковые настройки, и я даже пытался удалить других своих пауков из сценария, чтобы увидеть, не мешали ли они друг другу, но не могли его решить. < /p>
Эти два являются примером кодов для моего дефектного паука и моего основного файла < /p>
main: < /p>
import scrapy
from scrapy.utils.project import get_project_settings
from scrapy.crawler import CrawlerProcess
from ProjectFolder import Examplespider1
from ProjectFolder import Examplespider2
if __name__ == "__main__":
shared_data = {
"names": list_of_names,
"results": {
"spider1": {},
"spider2": {},
}
}
search_term = 'example'
settings = get_project_settings()
process = CrawlerProcess(settings)
process.crawl(Examplespider1, shared_data=shared_data, process_name=search_term)
process.crawl(Examplespider2, shared_data=shared_data, process_name=search_term)
process.start()
spider1_results = shared_data["results"]["spider1"]
spider2_results = shared_data["results"]["spider2"]
#do something with the data
< /code>
Проблема Spider: < /p>
import scrapy
class Examplespider1(scrapy.Spider):
name = "spider1"
allowed_domains = ["exampledomain.com"]
start_urls = ["https:exampledomain.com/something"]
def __init__(self, shared_data, process_name, *args, **kwargs):
super().__init__(*args, **kwargs)
self.shared_data = shared_data
self.process_name = process_name
def parse(self, response):
view_state = response.xpath('//input[@name="javax.faces.ViewState"]/@value').get()
if not view_state:
self.log("Não foi possível encontrar javax.faces.ViewState na página inicial.", level=scrapy.log.ERROR)
return
names = self.shared_data["names"]
for name in names:
form_data = {
formdata
}
yield scrapy.FormRequest(
url=self.start_urls[0],
formdata=form_data,
callback=self.parsesearch,
cb_kwargs={'name': name}
)
def parsesearch(self, response, nome_da_parte):
namespaces = {'x': 'http://www.w3.org/1999/xhtml'}
processos = response.xpath(
'//x:tbody[@id="fPP:processosTable:tb"]//x:b[@class="btn-block"]/text()',
namespaces=namespaces
).getall()
self.shared_data["results"]["spider1"][name] = processos
yield {
"Name": name,
"processos": processos,
}
Когда я использую на терминале только паука, я просто комментирую всю функцию инициализации, просто создаю локальную переменную со всеми именами и комментирую части, связанные с общей_датой, но использование локальной переменной для имен в пауке по умолчанию, очевидно, ничего не решило, так что у меня совершенно нет идей по этому поводу.
Не думаю, что это будет особенно полезно, но просто в случае, вот журналы, когда мой паук преуспевает в терминале и когда он происходит сбой в сценарии:
2025-01-23 11:42:38 [scrapy.core.engine] DEBUG: Crawled (200) (referer: None)
ERROR: Gave up retrying (failed 3 times): []
Подробнее здесь: [url]https://stackoverflow.com/questions/79384061/scrapy-spider-cant-connect-when-running-through-main-but-has-no-problem-when-d[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия