美文网首页
使用python第三方库Extraction抓取网站标题和图片

使用python第三方库Extraction抓取网站标题和图片

作者: elroyGuo | 来源:发表于2018-12-18 14:57 被阅读0次

    前一阵有一个小需求,给一个网站url,需要抓取网站的标题与内容图片,他们后期转换为卡片。

    由于是个小需求,用爬虫的话太重了,就考虑能不能找到python处理这个的第三方库,这样写好轮子也比较好扩展,最后在GitHub上找到了这个库:Extraction

    附上原文链接:GitHub - lethain/extraction: A Python library for extracting titles, images, descriptions and canonical urls from HTML.

    下面来说说基本用法:

    安装:

        pip install extraction    

    操作:

        import extraction

        import requests

        url ='https://www.zhihu.com/question/305280080'

        html = requests.get(url).text

        extracted = extraction.Extractor().extract(html,source_url=url)

        print(extracted.title,extracted.description,extracted.url,extracted.image,extracted.feed)

        print(extracted.titles,extracted.descriptions,extracted.urls,extracted.images,extracted.feeds)

    这样就会获得网站的标题和图片了,简单吧!

    别高兴太早,本人试了十几个国内访问较多的网站,发现有几个网站是获取不到图片的。包括新浪微博、最右、今日头条这几个网站。那怎么办呢?

    可以重写Extractor,以下以今日头条网站为例:

    分析了一下头条,发现标题、图片放在了js里,需要获得js才能获得,这里用js2py来解析js,不了解js2py的自行查找。

        class TouTiaoTechnique(Technique):

            def extract(self, html):

                soup = BeautifulSoup(html, "lxml")

                js_code = soup.find_all("script")[6].text

                res = js2py.eval_js(js_code)

                res = res.to_dict()

                try:

                    url = res['articleInfo']['coverImg']

                except (KeyError, ValueError):

                    url ='http://pic.51yuansu.com/pic3/cover/02/84/73/5a5f1ad302f54_610.jpg'

                return {

                    'images': [url]

                }

    然后,把techniques改成自己写好的:

        techniques = ["TouTiaoTechnique"]

        extractor = extraction.Extractor(techniques=techniques).extract(html, source_url=url)

    这样就可以了。

    相关文章

      网友评论

          本文标题:使用python第三方库Extraction抓取网站标题和图片

          本文链接:https://www.haomeiwen.com/subject/tbwkkqtx.html