使用HTML解析器获取特定div的内容

时间:2014-04-06 08:13:30

标签: python html sql beautifulsoup

我想使用像美丽的汤(python)这样的HTML解析器来获取特定div的内容,通过运行python脚本将其中的所有数据存储在我的本地服务器中,该脚本将由cron在我的Web服务器上定期执行

此外,我需要能够在我的网站上显示与网页中显示的内容完全相同的内容。

如果div的内容仅仅是文本,那么它很容易,但它是文本和图像的组合。 虽然偶尔会有swf文件,但我不想导入它们。

让我们说有问题的div被称为' cont'。 最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

幸运的是,我有一只能完全按照你需要做的蜘蛛。

from soup import BeautifulSoup as bs
from scrapy.http import Request
from scrapy.spider import BaseSpider
from hn.items import HnItem


class HnSpider(BaseSpider):
    name = 'hn'
    allowed_domains = []
    start_urls = ['http://news.ycombinator.com']

    def parse(self, response):
        if 'news.ycombinator.com' in response.url:
            soup = bs(response.body)
            items = [(x[0].text, x[0].get('href')) for x in
                     filter(None, [
                         x.findChildren() for x in
                         soup.findAll('td', {'class': 'title'})
                     ])]

            for item in items:
                print item
                hn_item = HnItem()
                hn_item['title'] = item[0]
                hn_item['link'] = item[1]
                try:
                    yield Request(item[1], callback=self.parse)
                except ValueError:
                    yield Request('http://news.ycombinator.com/' + item[1], callback=self.parse)

                yield hn_item

请参阅Github link以了解详情。