2016-07-19 6 views
0

Я новичок, используя xpath, Я хочу извлечь каждый заголовок, тело, ссылки, дата выпуска из this linkизвлекать данные из вложенного XPath

Everthing кажется, хорошо, но не на теле, как извлечь каждое тело на вложенная XPATH, спасибо :) перед

здесь мой источник

from scrapy.spider import BaseSpider 
from scrapy.selector import HtmlXPathSelector 
from thehack.items import ThehackItem 
class MySpider(BaseSpider): 
    name = "thehack" 
    allowed_domains = ["thehackernews.com"] 
    start_urls = ["http://thehackernews.com/search/label/mobile%20hacking"] 
    def parse(self, response): 
     hxs = HtmlXPathSelector(response) 
     titles = hxs.xpath('//article[@class="post item module"]') 
     items = [] 
     for titles in titles: 
      item = ThehackItem() 
      item['title'] = titles.select('span/h2/a/text()').extract() 
      item['link'] = titles.select('span/h2/a/@href').extract() 
     item['body'] = titles.select('span/div/div/div/div/a/div/text()').extract() 
     item['date'] = titles.select('span/div/span/text()').extract() 
      items.append(item) 
     return items 

кто-нибудь может исправить о Блоке тела? только на теле ... благодаря, прежде чем мате здесь картины инспекционных элементов с сайта enter image description here

+0

Что вам нужно исправить для '' body''? что вы получаете? что вы ожидаете? –

+0

Я хочу получить основное содержание о статье, в какой статье обсуждается ... , но я ничего не получаю – beboy

+0

Можете ли вы помочь мне paul? – beboy

ответ

1

Я думаю, что вы, где борется с селекторов, не так ли? Я думаю, вы должны проверить документацию на selectors, там есть много хорошей информации. В этом конкретном примере, используя CSS селекторы, я думаю, что это будет что-то вроде:

class MySpider(scrapy.Spider): 
    name = "thehack" 
    allowed_domains = ["thehackernews.com"] 
    start_urls = ["http://thehackernews.com/search/label/mobile%20hacking"] 

    def parse(self, response): 
     for article in response.css('article.post'): 
      item = ThehackItem() 
      item['title'] = article.css('.post-title>a::text').extract_first() 
      item['link'] = article.css('.post-title>a::attr(href)').extract_first() 
      item['body'] = ''. join(article.css('[id^=summary] *::text').extract()).strip() 
      item['date'] = article.css('[itemprop="datePublished"]::attr(content)').extract_first() 
      yield item 

Было бы хорошим упражнением для вас, чтобы изменить их XPATH селекторов и, возможно, также проверить о ItemLoaders вместе очень полезны ,

+0

Я пробую ваш помощник по сценарию, но на теле я все равно ничего не получаю. – beboy

+0

ты поможешь мне получить содержание тела парагпраха? – beboy

+0

спасибо, вдруг его удастся ... может быть, мои данные – beboy

Смежные вопросы