纪念第一个scrapy小爬虫

花了一下午的时间学习用scrapy框架写了一个简单的小爬虫。

参考的网站有
http://wiki.jikexueyuan.com/project/python-crawler/scrapy-example.html
和stackoverflow上各种问答(强烈安利这个网站呀)

写爬虫的具体过程和教程里基本一模一样,这里就记录一下遇到的一些问题吧。

要爬的数据是一个金融网站上一个表格里的基金数据。url地址是与基金代码有关的,基金代码存储在文件中,因此涉及到读写文件。每个网站都是独立爬取的,不存在从某一个网站访问其链接的网站的情况,比较简单。

1、打开本地文件的时候,文件路径出了点问题
for line in open("codes.txt"):
本来codes.txt与spider.py是存储在同一目录下的,但是这样访问时会报cannot find this file的错误。在网上也没有找到好的解决方法,最后是写了绝对路径,并且追溯到了usr级别

2、starturls是一个url集合而不是某一个url,一开始写的是starturls="http://fund.10jqka.com.cn/"+line[0:6]+"/bond.html"报错,后来改成了
starturls=[]
url=""
starturls.append(url)

3、xpath的获取推荐使用chrome的开发者工具,可以省不少时间。具体步骤是:右键->开发者工具->Elements里选中所需的标签->右键->Copy xpath
验证xpath是否正确的步骤:命令行进入当前项目目录->输入scrapy shell {site}site是要爬取的网址 回车->输入response.xpath({xpath}xpath为你所获得的xpath值) 回车
可以查看结果是否正确

4、假设xpath的返回结果是一个集合sites,里面是所有的tbody节点,此时要遍历每一个节点中的tr元素,正确的代码为single=site.xpath('tr')
一定要记住,tr前面没有/!!!

5、访问标签中的内容用.text()
访问该标签的id值用@id

6、如果要对xpath获得的结果做进一步处理,一定要记住结果是一个集合,因此若结果result是一个字符串,则result[0][2:]才是截取字符串第二个字符后面的所有

7、在写pipelines后,要记得在setting.py中加上
ITEM_PIPELINES={
'{项目名}.pipelines.{pipeline类名}':300
}
LOG_LEVEL='INFO'

大概就是这些啦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值