Skip to main content
 首页 » 编程设计

python之在 django 应用程序中使用 beautifulsoup 和请求跟踪链接的正确语法是什么

2024年10月17日31jirigala

我问了一个我认为我不清楚的问题。我已经成功地从网站主页上抓取了帖子。下一步是点击帖子中的链接到它的详细信息页面,这样我就可以抓取详细内容。这是我试图修改的代码,但它不起作用。请注意,我是新手,我在 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中它显示的是

[] 

我试图抓取的 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 

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

请您参考如下方法:

这会起作用

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 

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