2015-01-21 3 views
-1

Я пишу простой паук с помощью scrapy, в котором я хочу добавить какой-то механизм, чтобы узнать, какой контент я сканирую.python web scraping with scrapy spider

Скажем, например, у меня есть список строк:

The resource you are looking for has expired 
The resource is not available 

Как что у меня есть тысячи строк. Теперь я хочу проверить, есть ли у этого обходного контента один из них. Как я могу сделать этот python?

def process_item(self, item, spider): 
    try: 
     content = items['body'] 
     ----------------------------- // How can i proceed further. 
    except pymssql.Error, e: 
     print ("error") 

в «содержании» у меня есть информация об обходе.

у меня есть:

  1. с помощью сравнения строк
  2. должны создать файл поиска и сделать соответствующий

Но я хотел бы знать, является их какой-либо способ сделать это эффективно?

ответ

1

Определить список строк, которые вы хотите проверить и использовать встроенный в any() функции:

terms = [ 
    'The resource you are looking for has expired', 
    'The resource is not available' 
] 

has_terms = any(term in content for term in terms) 

Обратите внимание, что terms список должен быть определен вне process_item(), чтобы избежать его заново каждый раз, когда process_item() называется , Хорошая идея заключается в настройке параметров проекта.

Кроме того, если вы собираетесь пропускать элементы, имеющие какие-либо определенные термины, подумайте о перемещении чека на уровень паука. Это поможет избежать накладных расходов на передачу предмета от паука до трубопровода.

+0

Hi alecxe, Спасибо за ответ и как я могу переместить этот шаг на уровень паука. Я новичок в этом Можете ли вы мне помочь – Backtrack

+0

@Backtrack вы могли бы показать код своего паука? Благодарю. – alecxe

+0

Я использую портию, чтобы построить своего паука. Так что я немного запутался сейчас, например, какую часть кода я должен делиться – Backtrack