数据爬取:爬取淘宝及国美在线搜索建议词

该博客介绍了如何使用webmagic框架分别爬取淘宝和国美在线的搜索建议词。通过两种方式:基于首字母的四轮次抓取和基于汉语拼音的三轮次抓取。博客提供了详细的代码实现,包括设置爬虫配置、处理页面数据以及利用搜索建议词进行下一轮抓取。
摘要由CSDN通过智能技术生成
分为两种形式的抓取:
1.基于首字母的四轮次抓取 如: a ,aa ,aaa,aaaa
2.基于汉语i拼音的三轮次抓取:附拼音表
链接: http://pan.baidu.com/s/1eS5Kdmq 密码:n9pb

使用的框架为webmagic

淘宝爬取:
public class TaobaoPinyinSuggestWordPageProcessor implements PageProcessor{

    // 部分一:抓取网站的相关配置,包括编码、抓取间隔、重试次数等
    private Site site = Site.
            me().
            setUserAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36ss").
            setRetryTimes(5).setSleepTime(10);

    @Override
    // process是定制爬虫逻辑的核心接口,在这里编写抽取逻辑
    public void process(Page page) {
        //["童装","40827952"]
        JSONArray a = JSON.parseArray(JSON.parseObject(page.getJson().toString()).get("result").toString());
        for (Object aa : a) {
            String replace = aa.toString().replace("[", "").replace("]", "").replace("\"", "");            
            String substring = replace.substring(0,replace.indexOf(","));
            try {
                IOUtils.write(substring.getBytes(), new FileOutputStream(new File(fileName),true));
                IOUtils.write(IOUtils.LINE_SEPARATOR.getBytes(), new FileOutputStream(new File(fileName),true));

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        if(a.size()>9){
            String url = page.getUrl().toString();
            //https://suggest.taobao.com/sug?code=utf-8&q=
            int index = "https://suggest.taobao.com/sug?code=utf-8&q=".length();
            String query = url.substring(index, url.length());
            char[] chars = query.toCharArray();
            int num = 0;
            for (char c : chars) {
                if(c>=65 && c <= 90){
                    num++;
                }
            }
            if(num <3){
                List<String> temp = new ArrayList<String>();
                for (String add : speeeds) {
                    temp.add(url+add);
                }
                page.addTargetRequests(temp);
            }
        }

    }

    @Override
    public Site getSite() {
        return site;
    }

    private static String fileName ;

    private static List<String> speeeds;


    public static void main(String[] args) throws IOException {

         if(args.length>1 && args.length<3){
              fileName = args[0];
              speeeds = FileUtils.readLines(new File(args[1]));
          }else{
              fileName = &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值