什么是使用beautifulsoup& amp;来跟踪链接的正确语法django app中的请求?

时间:2016-06-24 21:48:33

标签: python django web-scraping beautifulsoup

我问了一个我不认为我很清楚的问题。我已经成功地从网站主页上删了帖子。下一步是关注帖子到其详细信息页面的链接,以便我可以抓取详细信息内容。这是我试图修改的代码,但它不起作用。请注意,我是一个新手,我在django应用程序中使用它。

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 %}
所有它显示的HTML中的

[]

我试图刮擦的网址看起来像这样

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

如何使用链接转到详细信息页面并从该页面中删除数据?

1 个答案:

答案 0 :(得分: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

但是我解决它的方式仍然显示方括号