如何仅使用Beautiful Soup提取博客内容并排除其他元素

时间:2017-08-22 18:00:53

标签: python python-3.x web-scraping beautifulsoup

我正在尝试从此blog post获取博客内容,并且根据内容,我只是指前六段。这是我到目前为止所提出的:

soup = BeautifulSoup(url, 'lxml')
body = soup.find('div', class_='post-body')

打印body还会在主div标签下包含其他内容。

2 个答案:

答案 0 :(得分:3)

试试这个:

import requests ; from bs4 import BeautifulSoup

res = requests.get("http://www.fashionpulis.com/2017/08/being-proud-too-soon.html").text
soup = BeautifulSoup(res, 'html.parser')
for item in soup.select("div#post-body-604825342214355274"):
    print(item.text.strip())

使用此:

import requests ; from bs4 import BeautifulSoup

res = requests.get("http://www.fashionpulis.com/2017/08/acceptance-is-must.html").text
soup = BeautifulSoup(res, 'html.parser')
for item in soup.select("div[id^='post-body-']"):
    print(item.text)

答案 1 :(得分:1)

我发现这个解决方案非常有趣:Scrape multiple pages with BeautifulSoup and Python

但是,我还没有找到任何查询字符串参数来解决,也许你可以从这种方法开始。

我现在发现最明显的事情是这样的:

  1. 每个月和每年搜索并从博客存档部分获取所有标题(例如,在http://www.fashionpulis.com/2017/03/等等)
  2. 使用标题和相应月份/年份构建网址(网址始终为http://www.fashionpulis.com/ $ YEAR / $ MONTH / $ TITLE.html)
  3. 在Shahin的回答
  4. 中描述文字