抓取新浪的每日星座运势

从新浪上抓取每日的星座运势,然后往求实的Astrology版发.

#!/usr/bin/python
# encoding: utf-8
from sgmllib import SGMLParser
from datetime import datetime, timedelta
import re
import urllib
starurl='http://image2.sina.com.cn/ast/2007index/tmp/star_php/star.gif'
class Parser(SGMLParser):
    rlt=[]
    def reset(self):
        SGMLParser.reset(self)
        self.rlt=[]
    def start_img(self, attrs):
        src=[v for k,v in attrs if k=='src']
        if src and src[0]==starurl:
            self.rlt.append('★')
    def start_p(self, attrs):
        self.rlt.append(': ')

    def end_p(self):
        self.rlt.append('\n')
   
    def handle_data(self, text):
        self.rlt.append(text.rstrip())

    def output(self):
        return re.sub(': \n', '\n', "".join(self.rlt))

def gettext(url):
    txt=urllib.urlopen(url).read().decode('gb18030').encode('utf-8')
    pattern=re.compile(r'<div class="lotstars">(.*)</div>', re.S)
    return pattern.findall(txt)[0]

astros = ['牡羊座 Aries       (03/21-04/19)', '金牛座 Taurus      (04/20-05/20)',
        '双子座 Gemini      (05/21-06/21)','巨蟹座 Cancer      (06/22-07/22)',
        '狮子座 Leo         (07/23-08/22) ', '处女座 Virgo       (08/23-09/22)',
        '天秤座 Libra       (09/23-10/23)', '天蝎座 Scorpio     (10/24-11/22)',
        '射手座 Sagittarius (11/23-12/21)', '摩羯座 Capricorn   (12/22-01/19)',
        '水瓶座 Aquarius    (01/20-02/18)', '双鱼座 Pisces      (02/19-03/20)']
def genedict():
    datestr = datetime.now().strftime('%Y-%m-%d')
    url='http://astro.sina.com.cn/pc/west/frame0_%d.html'
    rlt=[]
    parser=Parser()
    for i in range(12):
        parser.reset()
        key = datestr+' '+astros[i]
        urli=url % i
        parser.feed(gettext(urli))
        rlt.append((key, parser.output()))
    return rlt

if __name__ == '__main__':
    rlt=genedict()
    for k, v in rlt:
        print k, '\n', v, '\n'

 

 

#!/usr/bin/python
# encoding: utf-8
import telnetlib
import getpass
import parser
import time

HOST='202.113.13.188'
PORT=23
user = raw_input('Enter your account: ')
password = getpass.getpass()

tn = telnetlib.Telnet(HOST, PORT)
tn.write(user+'\n')
tn.write(password+'\n')
tn.write('\n'*7)
tn.write('F\n')
tn.write('\n')
tn.write('sAstrology\n')
rlt=parser.genedict()
for k,v in rlt:
    tn.write(chr(0x10))
    tn.write(k.decode('utf-8').encode('gb18030'))
    print k
    tn.write('\n\n')
    tn.write(v.decode('utf-8').encode('gb18030'))
    print v
    tn.write(chr(0x17))
    tn.write('\n')
    time.sleep(5)
tn.write('!')
tn.write('\n')
tn.close()

 

程序需要改进的地方:

  1. 进站之后的留言版留言较多,这时至少需要输入两个字符才能离开留言版页
  2. 用户有好友并且登录时有好友在线的情况
  3. 用户登录时收到了MSG

下一部计划:

  1. 试着用web方式实现同样的功能
  2. 实现求实的灌水机

转载于:https://www.cnblogs.com/tianyapiaozi/archive/2009/09/11/2513892.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Data JPA 从入门到精通~思维导图

#原图 System.out.println("https://www.processon.com/view/61c7227c0e3e7474fb9b4b76?fromnew1");

发邮件

System.Net.Mail.MailMessage message new System.Net.Mail.MailMessage("发件邮箱gmail.com","收件邮箱163.com", "测试标题", "测试内容"); System.Net.Mail.SmtpClient smtpClient new System.Net.Mail.SmtpClient("smtp.g…

Linux 编译 没有path,编译linux-2.6.21的问题-‘PATH_MAX’ undeclared

编译linux-2.6.21的问题&#xff1a;cripts/mod/sumversion.c: In function ‘get_src_version’:scripts/mod/sumversion.c:384: error: ‘PATH_MAX’ undeclared (first usein this function)scripts/mod/sumversion.c:384: error: (Each undeclared identifier isreported o…

高通5G版图现身!你的网络生活将迎来巨变?

来源&#xff1a;36Kr 作者&#xff1a;桐由于骁龙845移动平台和骁龙636移动平台的首发&#xff0c;3月的手机市场对于持币代购的消费者而言注定是充满期待的&#xff0c;在三星S9和红米Note5刷屏之时&#xff0c;曾经隐身手机幕后的高通也再一次引发用户热议&#xff0c;高通…

异步复位设计中的亚稳态问题及其解决方案

异步复位设计中的亚稳态问题及其解决方案田志明&#xff0c;杨军&#xff0c;罗岚&#xff08;东南大学国家专用集成电路系统工程技术研究中心&#xff0c;南京 210096&#xff09;摘 要&#xff1a;尽管异步复位是一种安全可靠复位电路的方法&#xff0c;但如果处理不当的话&a…

linux添加nginx,linux下安装Nginx1.16.0的教程详解

因为最近在倒腾linux&#xff0c;想安装新版本的nginx&#xff0c;找了一圈教程没有找到对应的教程&#xff0c;在稍微倒腾了一会之后终于成功的安装了最新版。服务器环境为centos&#xff0c;接下来是详细步骤&#xff1a;安装必要依赖插件?创建文件夹并切换过去?下载安装包…

深度|2030年8亿人会失业!图解机器人如何取代你的工作

来源&#xff1a;财看见-腾讯财经&#xff08;ID&#xff1a;qqckj2017&#xff09;未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0…

Java使用Itext5.5.10进行pdf签章

来源&#xff1a;Java使用Itext5.5.10进行pdf签章_liumengya007007的博客-CSDN博客_itext 签章 啰嗦 说到PDF数字签名签章&#xff0c;这个其实也是数字证书信息安全的应用范畴&#xff0c;关于数字证书和数字签名&#xff0c;网上有很多解释说明&#xff0c;但讲解都多不够详…

Python的bool类型

写习惯了C#的代码&#xff0c;在想要将一个字符串False转换为bool型的时候&#xff0c;很自然的写了如下的Python代码&#xff1a; 看到上面的结果了没&#xff1f;是True。突然记起Python中除了、""、0、()、[]、{}、None为False之外&#xff0c;其他的都是True。也…

linux qt程序编译出错,QTcreator编译出错

作为移植性很好的QT图形开发工具&#xff0c;他支持windows,linux,FBS,macos&#xff0c;Symbian等OS&#xff0c;在windows下的QT程序在安装了QTcreator后很快就编译出来了&#xff0c;可是在我的redhat enterprise5 安装后&#xff0c;一个hello&#xff0c;world!却报错了错…

C++ Programmer's Cookbook C++基础和C++高级

From&#xff1a;http://www.cppblog.com/mzty/archive/2007/08/13/29922.html ------------------------------------------------------------------------------------------ C随笔分类列表&#xff08;基础&#xff09;: VS Studio: VS快捷键&#xff1a;http://www.cppb…

工业机器人发展趋势分析 未来营收规模达到百亿级水平

来源&#xff1a;前瞻产业研究院摘要&#xff1a;工业机器人是打造自动化工厂的重要组成,可有效提高效率生产、降低成本和控制质量。工业机器人是面向工业领域的多关节机械手或多自由度的机器装置,它能自动执行工作,是靠自身动力和控制能力来实现各种功能的一种机器。工业机器人…

【itext学习之路】--5.对pdf进行盖章/签章/数字签名

来源&#xff1a;【itext学习之路】-------&#xff08;第五篇&#xff09;对pdf进行盖章/签章/数字签名_tomatocc的博客-CSDN博客_itext 数字签名 在上一篇文章中&#xff0c;我们学习了使用itext对pdf增加图片水印和文本水印&#xff0c;那么这篇文章我们将要学习更高级一点…

jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中,及其相关...

获取一组radio被选中项的值var item $(input[nameitems][checked]).val();获取select被选中项的文本var item $("select[nameitems] option[selected]").text();select下拉框的第二个元素为当前选中值$(#select_id)[0].selectedIndex 1;radio单选组的第二个元素为…

c++11 标准模板(STL)(std::pair)(七)访问 pair 的一个元素

定义于头文件 <utility> std::pair 是一个结构体模板&#xff0c;其可于一个单元存储两个相异对象。 pair 是 std::tuple 的拥有两个元素的特殊情况。 访问 pair 的一个元素 std::get(std::pair) template< size_t I, class T1, class T2 > typename std::tuple…

python selenium 用法 和 Chrome headless

From: http://cuiqingcai.com/2599.html Selenium教程&#xff1a;https://www.yiibai.com/selenium selenium 官方参考文档&#xff1a;https://selenium-python.readthedocs.io/index.html Selenium Documentation&#xff1a;https://www.seleniumhq.org/docs Selenium 与 …

linux ssh 时间设置,Linux下设置SSH Server设置时间链接限制(示例代码)

OpenSSH基于安全的理由&#xff0c;如果用户连线到SSHServer后闲置一段时间&#xff0c;SSH Server会在超过特定时间后自动终止SSH连线。本人习惯长时间连接&#xff0c;需要做如下修改&#xff1a;1、打开ssh配置文件&#xff1a;# vim /etc/ssh/sshd_config加入如下两个参数保…

【itext学习之路】--1.创建一个简单的pdf文档

来源&#xff1a;https://blog.csdn.net/tomatocc/article/details/80666011 iText是著名的开放源码的站点sourceforge一个项目&#xff0c;是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档&#xff0c;而且可以将XML、Html文件转化为PDF文件 本教程中…

redis linux服务,linux服务之redis

rediswget http://download.redis.io/releases/redis-4.0.6.tar.gzcd redis-4.0.6makecd src/./redis-server./redis-cli先启动server&#xff0c;再用cli去连接&#xff0c;开两个终端窗口[rootlocalhost src]# ./redis-cliCould not connect to Redis at 127.0.0.1:6379: Con…

并发服务器设计思路,参考apache学习UDP和QoS,研究成果

研究了快1个月的服务器架构&#xff0c;把研究成果记录一下。参考的有&#xff1a;Apache vlc ACE ftp我主要需要其中的并发处理&#xff0c;内存管理&#xff0c;TCP/UDP.QoS&#xff0c;速度限制等方面的内容&#xff0c;所以着重说这几方面。首先看一下Apache的基本框图&…