zoukankan      html  css  js  c++  java
  • post请求方式的翻页爬取内容及思考


    1
    #coding=utf-8 2 3 import urllib2 4 import urllib 5 import json 6 9 output = open('huizho.json', 'w')
    11 for page in range(1,30): //爬取的页数,从1至29页 12 request =urllib2.Request('http://www.hdgtjy.com/Index/PublicResults') 13 request.add_header('X-Requested-With','XMLHttpRequest') 14 request.add_header('Content-Type','application/x-www-form-urlencoded') 15 values = 'page=%d&size=10'%page  或者values = 'page='+str(page)+'&size=10'
    21 request.add_data(values) 22 response = urllib2.urlopen(request) 25 resHtml =response.read() 27 line = json.dumps(resHtml,ensure_ascii=False) + ' '  //因为爬取的内容含有中文,所以ensure_ascii不能为默认值True; 28 29 output.write(line) 30 output.close()
    本段代码主要实现post请求方式的翻页功能,爬取的内容为某汽车网站的内容;编写代码遇到以下一个问题
    1.当把12、13、14,行代码放到for循环上面,会发生当爬取的页数首位数发生改变时(这里因为网页原因只验证了个位数和两位数),爬取的内容出错(极大部分内容丢失,且爬取的不是目标内容)
      ;原因:request.add_data(value)这句代码,会造成数据持续叠加;出现BUG
     需要每次翻页时都请求服务器,才不会造成BUG出现。(此处理解不是很到位,不会说,望高手指正)
    2.json.dumps()函数 ensure_ascii属性默认为True;当爬取的内容中含有中文时需要修改默认值。
  • 相关阅读:
    c++ list_iterator demo
    模板元编程例子
    !a && !b 和 !(a || b) 的故事
    简明解释算法中的大O符号
    重构oceanbase的一个函数
    正则表达式识别汉字
    编写易于理解代码的六种方式
    Linux下的tar压缩解压缩命令详解
    2013 年 —— Facebook 在开源方面的工作介绍
    Kent Beck揭秘Facebook开发部署流程
  • 原文地址:https://www.cnblogs.com/yyx1-1/p/5626487.html
Copyright © 2011-2022 走看看