标签:
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.代码如下:
标签:
原文地址:http://blog.csdn.net/yedoubushishen/article/details/51252311