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;当爬取的内容中含有中文时需要修改默认值。
  • 相关阅读:
    不同长度的数据进行位运算
    Linux的sleep()和usleep()的使用和区别
    linux inode已满解决方法
    Debian 系统修改语言设置成英文
    IIS设置问题
    Ajax实现跨域访问的三种方法
    HTML--备忘点
    C#基础---值类型和引用类型
    dapper.net框架使用随笔
    WebService的搭建,部署,简单应用和实体类结合使用
  • 原文地址:https://www.cnblogs.com/yyx1-1/p/5626487.html
Copyright © 2011-2022 走看看