2016-06-24 5 views
2

私は、私は私がはっきりしていたとは思わないという質問をしました。私はすでにsuccesfulyサイトのホームページから投稿を掻いてきました。次のステップは、投稿からその詳細ページへのリンクをたどって、詳細コンテンツをスクラップすることです。これは私が修正しようとしたコードですが、動作しません。私は初心者であり、私はこれをジャンゴアプリで使っています。 HTMLでdjangoアプリケーションでbeautifulsoupと要求を使用してリンクをたどる正しい構文は何ですか?

def sprinkle(): 
    url_two = 'http://www.example.com' 
    html = requests.get(url_two, headers=headers) 
    soup = BeautifulSoup(html.text, 'html5lib') 
    titles = soup.find_all('div', {'class': 'entry-pos-1'}) 

    entries = [{'href': url_two + div.a.get('href'), 
       'comment': BeautifulSoup(url_two + div.a.get('href')).find_all('div', {'class': 'article-body'}), 
       'src': url_two + div.a.img.get('data-original'), 
       'text': div.find('p', 'entry-title').text, 
       } for div in titles][:6] 

    return entries 

と私の意見で

sp = sprinkle() 

context = { 
    "comment": sp 
} 

と私のテンプレートで

{% for s in sp %} 
    {{s.comment}} 
{% endfor %} 

それが示して全てが

[] 

私がしようとしているのURLですこんなふうに見せてくれる

http://www.example.com//article/218582/detail-art 
http://www.example.com//article/218817/detail-science 
http://www.example.com//article/218542/detail-theatre 

リンクを使用して詳細ページにアクセスし、そのページのデータをスクラップするにはどうすればよいですか?

+0

を示して?また、私が答えた最後の質問はエラーに関するものなので、今起こっていることに全く関係していません。 find_all( 'div'、{'class': 'article-body'}) 'は空のリストを返しますか? –

+0

それが私がここにいる理由です。私はあなたの時間をウエストしないように明確にする。私はリンクを持っているいくつかのポストを削った。私は詳細ページへのリンクをたどり、身体の内容が何であっても擦り傷をつけたい。 –

+0

はい、あなたのスクレイピングが機能していないビット、あなたはあなたがdjangoについて心配する前にそれを並べ替える必要があります。あなたがリンクを共有すると言いましたが、それがなくてもhtmlを使わずにssueを解決するのに5分かかります。 –

答えて

2

これは

def sprinkle(): 
     url_two = 'http://www.vladtv.com' 
     html = requests.get(url_two, headers=headers) 
     soup = BeautifulSoup(html.text, 'html5lib') 
     titles = soup.find_all('div', {'class': 'entry-pos-1'}) 

     def make_soup(url): 
      the_comments_page = requests.get(url, headers=headers) 
      soupdata = BeautifulSoup(the_comments_page.text, 'html5lib') 
      comment = soupdata.find('div', {'class': 'article-body'}) 
      para = comment.find_all('p') 
      return para 

     entries = [{'href': url_two + div.a.get('href'), 
        'src': url_two + div.a.img.get('data-original'), 
        'text': div.find('p', 'entry-title').text, 
        'comments': make_soup(url_two + div.a.get('href')) 
        } for div in titles][:6] 

     return entries 

に動作しますが、私はそれを解決方法は、角括弧は、まだあなたがスクレーピングされているURLを追加することができます

関連する問題