码迷,mamicode.com
首页 > 其他好文 > 详细

scrapy爬取2(获取post网址)

时间:2016-04-29 16:42:10      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

1.爬取瑞钱宝的投资方式的数据,爬取内容如下:

  技术分享

  技术分享

2.查看网址,可以发现:

技术分享

技术分享

技术分享

技术分享

点击下一页时,地址栏里的链接均无任何变化。可以判断出该网页的数据都是post方式上传的。

说一下get和post的区别:

get显式的传参,而post是隐式的。

get的URL会有限制,而post没有。

get没有post安全。

不过,小某还看到一篇内容。点击打开链接

3.F12查找数据

单纯的只看一页的内容,等待响应,然后再network里查找的话,并没有post的数据。应该是F12打开后,点击下一页,查看变化,可以找到post到的数据。

4.用Fiddler工具抓取

用这个工具进行抓取,只能抓取到post的三个参数,像这样的:

pageNo=1&pageSize=10&loanId=a53a4759bf89454dbc5756ca0e12f482

获取的三个参数分别是:pageNo,pageSize,loanId

没有完整的链接,不会拼接。结合第三步,便可以找到完整的网址。比如这样:

技术分享

再往下查看,就能找到所传的三个参数

技术分享

首页的链接也可以通过这种方式找到。

技术分享

技术分享

5.开始分析源代码进行爬取。

获取网页元素的时候用的xpath,大概的思路是先获取首页的title,然后进入下一页获取四个小标题以及下面的内容。可是,用xpath没有得到想要的结果,获取下来的都是所有的title,所有的小标题,所有的内容。可能是不太会用xpath。。。。/(ㄒoㄒ)/~~

遇到的问题

(1)进入到第二个页面时,由于不同的第二个页面投资记录的页数也是不一样的,for循环的时候就不知道应该写多少(是不是很菜!!!)就像这样:

for url in urls:
            rea=re.compile('/loan/show-loan-detial-loanId-')
            url=rea.sub('',url)
            # print url
            for pageIndex in range(1,10):
                link="http://www.rqbao.com/loan/ajaxInvestCommonList?pageNo="+str(pageIndex)+"&pageSize=10&loanId="+url
                # print link
                yield Request(link,callback=self.parseTable)
pageNO的范围不明确。

(2)用xpath直接获取所有内容时,这样写的:

items=selector1.xpath('//tr[@class="investRecording"]/td').extract()
可以获取到投资时间,投资金额和投资方式,唯独少了投资用户,再仔细观察源码,投资用户虽然也在<td>标签里,但是里面又嵌了一个<font>标签,最后又用正则把它替换掉。

(3)存储的时候出现问题

一直在报错说,文件不存在,测试一下是存在的。然后修改了一下路径的写法,

#一开始是这样写的D:\Python test\rqbao\rqb.txt
with open('D:\\Python test\\rqbao\\rqb.txt','a') as f:
然后又会报错,说是编码的问题,就在写入的时候encode一下,就能正常写入了。

6.代码如下:







scrapy爬取2(获取post网址)

标签:

原文地址:http://blog.csdn.net/yedoubushishen/article/details/51252311

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!