当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 44 篇帖子 ]  前往页数 1, 2, 3  下一页
作者 内容
1 楼 
 文章标题 : [四星]写一个脚本,自动找到相关图书和价格
帖子发表于 : 2009-09-22 9:56 
论坛管理员

注册: 2005-03-27 0:06
帖子: 10116
系统: Ubuntu 12.04
送出感谢: 7
接收感谢: 128
1 任务内容: 写一个脚本,根据输入的关键词,自动到当当/卓越/新华书店去搜索到书籍和价格,并按价格排序显示为 ”来源 图书名称 价格“ 列表。

2 任务的难度: 四星

3 任务的目的: 掌握bash和相关模拟提交http请求

4 任务所涉及的软件: bash [wget/w3m]

5 任务将大致消耗的时间: 3~5天

6 任务涉及网站: http://www.dangdang.com/ http://www.amazon.cn/ http://www.xinhuabookstore.com/


页首
 用户资料  
 
2 楼 
 文章标题 : Re: [四星]写一个脚本,自动找到相关图书和价格
帖子发表于 : 2009-09-22 10:30 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
有些搜索会有很多哦,到底要几条还是都要阿?


页首
 用户资料  
 
3 楼 
 文章标题 : Re: [四星]写一个脚本,自动找到相关图书和价格
帖子发表于 : 2009-09-22 10:31 
论坛管理员

注册: 2005-03-27 0:06
帖子: 10116
系统: Ubuntu 12.04
送出感谢: 7
接收感谢: 128
xiooli 写道:
有些搜索会有很多哦,到底要几条还是都要阿?

都要


页首
 用户资料  
 
4 楼 
 文章标题 : Re: [四星]写一个脚本,自动找到相关图书和价格
帖子发表于 : 2009-09-22 10:34 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
奥克,mark


页首
 用户资料  
 
5 楼 
 文章标题 : Re: [四星]写一个脚本,自动找到相关图书和价格
帖子发表于 : 2009-09-22 11:14 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
处理字符,用bash,bt的。


_________________
● 鸣学


页首
 用户资料  
 
6 楼 
 文章标题 : Re: [四星]写一个脚本,自动找到相关图书和价格
帖子发表于 : 2009-09-22 18:00 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
完成!
代码:
用法: ./booksearch.sh keyword

注意: 由于所有的条目均会获取,故而在搜索出很多项目时会剧慢无比,无忍耐力者请谨慎尝试。。。
代码:
#!/bin/bash

# Author xiooli <xioooli[at]yahoo.com.cn>
# 2009.09.22

dangdang() {
   
   local url key page maxpage
   key="$(iconv -f utf8 -t gbk <<< "$1"|uni2ascii -a J)"
   page=1
   url="http://search.book.dangdang.com/search.aspx?key=${key}&page=${page}&order=1"
   maxpage="`w3m -dump_source "$url"|grep -m1 -o "maxPage=.*;"|grep -o "[0-9]*"`"
   if [ x"$maxpage" != x ]; then
      for page in `seq 1 "$maxpage"`; do
         url="http://search.book.dangdang.com/search.aspx?key=${key}&page=${page}&order=1"
         w3m -dump "$url" \
         |awk '/\[page_down\]|\[buttom_gou\]|\[button_det\]|\[enregister\]/{
         getline
         tmp=$0
         getline
         if($0 ~ /^$/ && tmp !~ /\[next/)
            {printf "当当网 "tmp
            } else if(tmp !~ /\[next/) {
            printf "当当网 "tmp$0}
         }
         /¥/{print " 价格: "$1}' \
         |sed "s/¥[^¥]*//;s/折扣.*//"
      done
      echo
   fi
}

amazon() {
   local url key page maxnum maxpage
   key="$(iconv -f utf8 -t gbk <<< "$1"|uni2ascii -a J)"
   page=1
   url="http://www.amazon.cn/s?pageletid=headsearch&searchType=&i=books&keywords=${key}&Go.x=0&Go.y=0&searchKind=keyword&sort=price&page=${page}"
   maxnum="$(wget "$url" -q -O-|grep -o "class=\"resultCount\"[^<]*<"\
   |grep -o [0-9,]*|tail -n1|tr -d ",")"
   if [ "$(($maxnum%12))" != 0 ]; then
      maxpage=$(($maxnum/12+1))
   else
      maxpage=$(($maxnum/12))
   fi   
   if [ x"$maxpage" != x ]; then
      for page in `seq 1 "$maxpage"`; do
         url="http://www.amazon.cn/s?pageletid=headsearch&searchType=&i=books&keywords=${key}&Go.x=0&Go.y=0&searchKind=keyword&sort=price&page=${page}"
         wget "$url" -q -O- \
         |awk -F"[<>]" '/srTitle/{printf "亚马逊 "$5}
         /saleprice/{if ($11 ~ /[0-9]/)print " 价格: "$11}'
      done
      echo
   fi
}

xinhua(){
local url key page maxpage
   key="$(echo "$1"|uni2ascii -a J)"
   page=1
   url="http://www.xinhuabookstore.com/search/?pagination.currentPage=${page}&pagination.pageSize=20&pagination.skipSize=10&Submit.y=16&Submit.x=40&keyword=${key}"
   maxpage="$(wget "$url" -q -O-|grep -o "条 .* 页"|awk '{print $2}')"
   if [ x"$maxpage" != x ]; then
      for page in `seq 1 "$maxpage"`; do
         url="http://www.xinhuabookstore.com/search/?pagination.currentPage=${page}&pagination.pageSize=20&pagination.skipSize=10&Submit.y=16&Submit.x=40&keyword=${key}"
         wget "$url" -q -O- \
         |awk -F"[<>]" '/class=\"fontb_2\"/{printf "新华网 "$9}
         /class=\"price3\"/{print " 价格: ¥ "$15}'
      done
      echo
   fi

}

{
   dangdang $1
   amazon $1
   xinhua $1
}|sort -t ¥ -k2 -n


页首
 用户资料  
 
7 楼 
 文章标题 : Re: [四星]写一个脚本,自动找到相关图书和价格
帖子发表于 : 2009-09-23 8:48 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
晕哦,都没人顶,没意思。。。 :em20


页首
 用户资料  
 
8 楼 
 文章标题 : Re: [四星]写一个脚本,自动找到相关图书和价格
帖子发表于 : 2009-09-23 8:56 
论坛管理员

注册: 2005-03-27 0:06
帖子: 10116
系统: Ubuntu 12.04
送出感谢: 7
接收感谢: 128
:em01
引用:
sort: 多字符标签 “¥”
./booksearch.sh: line 40: %12: 语法出错:此处需要运算符 (error token is "%12")


这两个错误该如何处理?


页首
 用户资料  
 
9 楼 
 文章标题 : Re: [四星]写一个脚本,自动找到相关图书和价格
帖子发表于 : 2009-09-23 9:12 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
oneleaf 写道:
:em01
引用:
sort: 多字符标签 “¥”
./booksearch.sh: line 40: %12: 语法出错:此处需要运算符 (error token is "%12")


这两个错误该如何处理?

额?你搜的啥呀,难道没有搜索出东西,那就给maxnum赋一个默认值,还有那个sort的问题,我在arch上没有这种提示,可能是复制粘贴的问题,我直接附上文件吧。


您没有权限查看这个主题的附件。


页首
 用户资料  
 
10 楼 
 文章标题 : Re: [四星]写一个脚本,自动找到相关图书和价格
帖子发表于 : 2009-09-23 10:01 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
xiooli 写道:
晕哦,都没人顶,没意思。。。 :em20

你缩到15行。就有人顶。


_________________
● 鸣学


页首
 用户资料  
 
11 楼 
 文章标题 : Re: [四星]写一个脚本,自动找到相关图书和价格
帖子发表于 : 2009-09-23 10:20 

注册: 2008-11-01 21:42
帖子: 1028
地址: 树下板凳
送出感谢: 0 次
接收感谢: 1
纯支持!等下试试


_________________
民族的脊梁,是踏实做事的人,非只知道骂街的泼妇。


页首
 用户资料  
 
12 楼 
 文章标题 : Re: [四星]写一个脚本,自动找到相关图书和价格
帖子发表于 : 2009-09-23 11:04 
头像

注册: 2007-10-19 14:51
帖子: 4953
地址: 深圳
送出感谢: 0 次
接收感谢: 2
xiooli 写道:
晕哦,都没人顶,没意思。。。 :em20

代码:
$ booksearch perl
/home/yaoms/bin/booksearch: line 9: uni2ascii: command not found
/home/yaoms/bin/booksearch: line 12: w3m: command not found
/home/yaoms/bin/booksearch: line 35: uni2ascii: command not found
/home/yaoms/bin/booksearch: line 40: %12: syntax error: operand expected (error token is "%12")


_________________
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'


页首
 用户资料  
 
13 楼 
 文章标题 : Re: [四星]写一个脚本,自动找到相关图书和价格
帖子发表于 : 2009-09-23 11:06 
头像

注册: 2007-10-19 14:51
帖子: 4953
地址: 深圳
送出感谢: 0 次
接收感谢: 2
建议用 纯 perl 实现。


_________________
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'


页首
 用户资料  
 
14 楼 
 文章标题 : Re: [四星]写一个脚本,自动找到相关图书和价格
帖子发表于 : 2009-09-23 13:35 
头像

注册: 2009-02-12 9:39
帖子: 27
送出感谢: 0 次
接收感谢: 0 次
我来顶~
很好的学习机会。


页首
 用户资料  
 
15 楼 
 文章标题 : Re: [四星]写一个脚本,自动找到相关图书和价格
帖子发表于 : 2009-09-23 16:47 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
eexpress 写道:
xiooli 写道:
晕哦,都没人顶,没意思。。。 :em20

你缩到15行。就有人顶。

ee写一个15行以内的大家来围观 :em02
yaoms 写道:
建议用 纯 perl 实现。

perl的不会,期待ee阿姨的perl版本


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 44 篇帖子 ]  前往页数 1, 2, 3  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译