美文网首页
使用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