菜鸟python入门爬虫手记(2)

问题描述:

(1) 写一个程序,以一定时间频率刷新apple store(http://store.apple.com/hk-zh/buy-iphone/iphone6/),判断货物有/无状态;
(2)当有货的时候,发一个短信给你手机(有很多实现方法,最简单就是注册一个139信箱了,具体请大家google);
(3) 注册一个账户,当有货的时候自动下单,若成功则发短信提醒。

1、判断iphone6的有无

查看了一下页面的源代码,粗略的查看了一遍,就发现了下面这一段:

从汉字部分往前看,前面刚好就是尺寸、颜色、内存、价格、一共有18个和网页上一致。那么接下来,通过正则表达式查找相同部分:dimensionScreensize":"(.*?)","dimensionColor":"(.*?)","dimensionCapacity":"(.*?)","partNumber":".*?","price":"(.*?)","displayShippingQuote":"(.*?)".*?},然后比较最后一个,就可以知道哪种有货了。

2、怎么自动发送短信?

百度google了一下,有了如下代码:

<span style="font-size:18px;">def sendmail(to_list,sub,con):

  mail_host="smtp.139.com"
  mail_user="***.com"
  mail_pass="***"
  mail_postfix="mail.139.com"

  me = mail_user+"<"+mail_user+"@"+mail_postfix+">"

  msg = MIMEMultipart('related')
  msg['Subject'] = email.Header.Header(sub,'utf-8')
  msg['From'] = me
  msg['To'] = ";".join(to_list)
  msg.preamble = 'This is a multi-part message in MIME format.'

  msgAlternative = MIMEMultipart('alternative')
  msgText = MIMEText(con, 'plain', 'utf-8')
  msgAlternative.attach(msgText)
  msg.attach(msgAlternative)

  try:
    s = smtplib.SMTP()
    s.connect(mail_host)
    s.login(mail_user,mail_pass)
    s.sendmail(me, to_list, msg.as_string())
    s.quit()

  except Exception,e:
    return False
  return True</span>

综合爬虫,就可以完成一二任务。

3、如何登录?

iPhone6现在是没货的,那现在只能用iPhone5来进行测验。

要加入购物车保存起来,肯定是要登录的,我们来看看这是怎么个情况。


清一色的GET!!

这和想象的不一样啊,没有POST表单它是怎么登录的?难道这样也可以?搜了下,也没有找到合适的答案。

在一次检测时,输错密码,监视到它执行了一个POST方法,它提交了一个表单,其中就包含我的id和密码以及一串看不懂的元素。那哪些是变化的,哪些又是不变的?

从不同的网页进入,发现表单的一些元素是会改变的,猜想它和输入密码后要转跳的地址应该有关系。

接下来就开始实验了。先将完整的表单照搬入,读取返回的结果如下:


发现其中的url就是跳转的页面。

也就是说,从不同的页面进行登录,它的表是不同的,登录成功后跳转的地址也是不同的。

4、登录后,怎么把东西加入购物车呢?

继续监视加入购物车操作。。发现它执行的第一个GET中有这样的请求:


展开看请求,就能发现其中包含有加入购物车的货物信息。筛选出必要的元素加入表单,来打开url,经过修改,总算成功。

5、如何连续操作页面,把想要的iPhone加入购物车?

对网页连续操作,我用的是cookielib,主要学习于:http://www.cnblogs.com/sysu-blackbear/p/3629770.html

以上都是在对一个型号的进行操作,添加特定的表单,那怎么加任意型号呢?




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值