2015-01-09 4 views
0

Я пытаюсь очистить содержимое после появления определенного ключевого слова/строки.Использование Scrapy для очистки содержимого после определенного ключевого слова/строки

Пусть Xpath выглядит следующим образом:

<meta property="og:url" content="https://www.example.com/tshirt/pcid111-31"> 
    <meta property="og:url" content="https://www.example.com/tshirt/pcid3131-33"> 
    <meta property="og:url" content="https://www.example.com/tshirt/pcid545424524-84"> 

1) Как я могу извлечь все данные внутри content элемента, property="og:url

2) Я также хочу, чтобы извлечь ничего, что после того, как pcid , может кто-нибудь предложить способ обойти это?

Теперь уверен, если это будет работать:

пункт [ "пример"] = sel.xpath ("// мета [@ свойство = 'ог: URL']/текст()"). Экстракт() [0] .replace ("* pcid", "")

Имеется ли замена в символьных символах?

ответ

1

Это извлечет content атрибуты элементов, property="og:url"

og_urls = response.xpath("//meta[@property='og:url']/@content").extract() 

Для извлечения материала из URL обычно лучше использовать регулярные выражения, в вашем случае это будет:

for url in og_urls: 
    id = re.findall("pcid(.+)") # "pcid(.+)" = any characters after 'pcid'(greedy) 
    # re.findall() returns a list and you probably want only the first occurrence and there mostlikely only be one anyway 
    id = id[0] if id else '' 
    print(id) 

или вы можете разделить URL на «PCID» и принять позже значение , например

for url in og_urls: 
    id = url.split('pcid')[-1] 
    print(id) 
1

Попробуйте

x=len(hxs.select("//meta/@content").extract()) 

for i in range(x): 
    print hxs.select("//meta/@content").extract()[i].split('pcid')[1] 

Выход:

111-31

3131-33

545424524-84