как исключить весь заголовок с помощью find? - PullRequest
0 голосов
/ 08 марта 2019

У меня есть функция, позволяющая получать все заголовки с моего сайта. я не хочу получать название от некоторых продуктов это правильный путь? я не хочу названия продуктов со словами «OLP NL», «Arcserve», «LicSAPk» или «symantec»

def get_title ( u ):
html = requests.get ( u )
bsObj = BeautifulSoup ( html.content, 'xml' )
title = str ( bsObj.title ).replace ( '<title>', '' ).replace ( '</title>', 
'' )
if (title.find ( 'Arcserve' ) or title.find ( 'OLP NL' ) or title.find ( 
'LicSAPk' ) or title.find (
        'Symantec' ) is not -1):
    return 'null'
else:
    return title

            if (title != 'null'):
            ws1 [ 'B1' ] = title
            meta_desc = get_metaDesc ( u )
            ws1 [ 'C1' ] = meta_desc
            meta_keyWrds = get_metaKeyWrds ( u )
            ws1 [ 'D1' ] = meta_keyWrds
            print ( "writing product no." + str ( i ) )
        else:
            print("skipped product no. " + str ( i ))
            continue;

проблема в том, что программа исключает все мои продукты, и все, что я вижу, это «пропущенный продукт №». ? че? не у всех есть эти слова ...

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Вы можете изменить оператор if для (title.find ( 'Arcserve' )!=-1 or title.find ( 'OLP NL' )!=-1 or title.find ('LicSAPk' )!=-1 or title.find ('Symantec' )!=-1) или создать функцию для оценки терминов, которые вы хотите найти

def TermFind(Title):
    terms=['Arcserve','OLP NL','LicSAPk','Symantec']
    disc=False
    for val in terms:
        if Title.find(val)!=-1:
            disc=True
            break
    return disc

Когда я использовал оператор if, всегда возвращал True независимо от значения заголовка. Я не смог найти объяснения для такого поведения, но вы можете попробовать проверить, что [ Python! = Операция против "не" и [ вложенная "и / или" операторы if . Надеюсь, поможет.

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

Аналогичная идея с использованием any

import requests 
from bs4 import BeautifulSoup

url = 'https://www.cdsoft.co.il/index.php?id_product=300610&controller=product'
html = requests.get(url)
bsObj = BeautifulSoup(html.content, 'lxml')
title = str ( bsObj.title ).replace ( '<title>', '' ).replace ( '</title>', '' )
items = ['Arcserve','OLP NL','LicSAPk','Symantec']

if not any(item in title for item in items):
    print(title)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...