色彩时光 | 记录程序员世界的点点滴滴

用urllib2采集微信文章


微信文章里有很多优质内容,想收藏分享到自己的网站上,但是如果一个个去编辑的会比较辛苦,能用程序重复的工作尽量用程序去解决,所以有了做微信文章采集的想法。当然这里也不是完全的自动采集,毕竟从采集链接来说是不规则链接。


基本思路是复制微信文章链接地址,然后配置好要分享到网站上的栏目以及相应的标签,然后以五篇文章为一组进行内容采集。其中图片暂时未采集(不能直接链接预估采集时得把图片流保存到图片服务上),嵌套的视频采集成功,进行了地址的转换,在chrome调试模式下能拿到转换地址。

def get_wx(arts):
    try:
        print "get_wx"
        for item in arts:
            #item["link"] 需采集的微信地址
            #print item,item["link"]
            base_url=item["link"]
            opener=urllib2.build_opener()
            response=opener.open(base_url)
            content=response.read()
            soup=BeautifulSoup(content)
            #提取文章标题
            titleHtml=soup.find(id="activity-name")
            title=titleHtml.get_text().strip()
            #print title
            #提取文章内容主体
            contentHtml=soup.find(id="js_content")
            #去除img标签
            imgs=contentHtml.findAll("img")
            for img in imgs:
                '''
                img_src=img['data-src']
                imgSrc_arr=str(img_src).split("/0")
                img_src="%s/640?wx_fmt=jpeg"%imgSrc_arr[0]
                del img['data-src']
                del img['data-ratio']
                del img['data-s']
                del img['data-type']
                del img['data-w']
                img['src']=img_src
                '''
                if img.parent.name=="p":
                    img.parent.decompose()
                img.decompose()
            #iframe视频地址转换
            iframes=contentHtml.findAll("iframe")
            for iframe in iframes:
                iframe_src= iframe["data-src"]
                #print iframe_src
                iframe_list=str(iframe_src).split("?")
                #print iframe_list
                #删除多余属性
                del iframe["data-src"]
                iframe["src"]="http://v.qq.com/iframe/player.html?%s"%iframe_list[1]
                iframe.parent["style"]="text-align:center;"
            #去除链接
            hrefs=contentHtml.findAll("a")
            for href in hrefs:
                href.decompose()

            '''
            ps=contentHtml.findAll("p")
            for p in ps:
                if len(p.get_text().strip())==0:
                    p.decompose()
            '''
            #截取描述
            content=contentHtml.get_text().strip()
            desc=content[:120]

            #保存文章
            art=Article()
            art.keywords=title
            art.content=contentHtml
            art.title=title
            art.desc=desc
            art.ispublish=0
            #栏目
            category=Category.objects.get(id=item["cla_id"])
            art.category=category
            #标签
            tags_ids=list(str(item["tags_ids"][:-1]).split(","))
            glossarys=Glossary.objects.filter(id__in=tags_ids)
            art.save()
            for item in glossarys:
                art.glossary.add(item)
    except Exception,ex:
        print ex.message

地址:http://www.rgbtime.com/addwx/


您可能也对下面文章感兴趣:

Write a Comment


* Content (required) 10~500s

分类

热门标签

友情链接