2016-07-26 4 views
0

Ich kann den "Schlüsselwort" Inhalt nicht scrapieren. >“< Ich habe viele Methoden ausprobiert, aber noch immer nicht.Mein Python Scrapy kann den "Schlüsselwort" Inhalt nicht auskratzen.

ich erfolgreich andere Inhalte abgerufen haben, aber immer noch nicht das bekommen‚keyword‘Inhalt.

Kann mir jemand helfen, diese Fehler zu beheben ?? Das Schlüsselwort Inhalt befindet sich in der "#keyword_table a", oder XPath "// * [@ id =" keyword_table "]/tbody/tr/td [2]/a"

Bild des Keyword-Content:

enter image description here

Mein Code:

import scrapy 
from bs4 import BeautifulSoup 
from digitimes.items import DigitimesItem 


class digitimesCrawler(scrapy.Spider): 
    name = 'digitimes' 
    start_urls = ["http://www.digitimes.com.tw/tw/dt/n/shwnws.asp?id=435000"] 


def parse(self, response): 
    soup = BeautifulSoup(response.body,'html.parser') 
    soupXml = BeautifulSoup(response.body, "lxml") 
    simpleList = [] 

    item = DigitimesItem() 

    timeSel=soup.select('.insubject .small') 
    tmpTime = timeSel[0].text 
    time = tmpTime[:10] 
    item['time'] = time #處理完時間啦 
    print(time) 

    titleSel = soup.select('title') 
    title = titleSel[0].text 
    item['title'] = title #處理完時間啦 
    print(title) 

    #================== To Resolve ================== 

    keywordOutput="" 
    for k in soupXml.select('#keyword_table a'): 
     for key in k: 
      keywordOutput = keywordOutput + key + " " 
    item['keyword'] = keywordOutput 
    print(keywordOutput) 

    #================== To Resolve ================== 



    categoryOutput="" 
    for m in soup.select('#sitemaptable tr td a'): 
     for cate in m: 
      if(cate!="DIGITIMES"): 
       categoryOutput = categoryOutput + cate + " " 
    item['cate'] = categoryOutput 
    print(categoryOutput) 

    simpleList.append(item) 
    return simpleList 

Antwort

0

Gibt es einen besonderen Grund, warum Sie BeautifulSoup über scrapy Selektoren verwenden? Die Antwort, die Ihre Methode empfängt, fungiert bereits als ein Scrapy-Selektor, der sowohl die xpath- als auch die css-Auswahl treffen kann.

Es scheint 3 Schlüsselworte in der Tabelle zu geben. Sie können sie entweder mit Xpath oder Css Selektoren wählen:

response.css("#keyword_table a::text").extract() 
# or with xpath 
response.xpath("//*[@id='keyword_table']//a/text()").extract() 
# both return 
>>> [u'Sony', u'\u5f71\u50cf\u611f\u6e2c\u5668', u'\u80a1\u7968\u4ea4\u6613'] 
+0

Vielen Dank !! Ich habe gelernt, BeautifulSoup vom Online-Kurs zu verwenden ~ Ich werde gehen, um den ursprünglichen Selektor im scrapy zu überprüfen ~~ Danke !! –

Verwandte Themen