受大牛们的鼓励,继2个熬夜的晚上终于做完scrapy版的“七日热点”。宝宝好累,做到凌晨,电脑差一点被收走。 赶紧开始记录。
Scrapy 是专门用来爬取网站数据的应用框架。不能直接用pycharm来创建一个scrapy的project。需要现在shell中写入scrapy startproject 项目名称。然后打开pycharm,就会生成类似于如下多个py文件组成项目。
具体每个py文件的功能可以查找相关资料。现在需要做的是在spiders目录下新建一个你的爬虫主的py文件。这就是你要写爬虫的主要地方。
name=sevenday1是爬虫名字,要和上边的类“sevenday取不一样的名称,在main.py 会启动这个爬虫名称来运行爬虫
类Selector是一个Scrapy的选择器。通过特定的XPath表达式来“选择” HTML文件中的某个部分。上边的例子通过xpath选取包含class=note-list的标签ul下的li标签。通过网页分析,datas是一个列表。不确定的可以在这里打印datas看一下。
另外,Request还可以在请求下一页解析的时候,将本页的数据通过meta传递给下一页。meta是一个字典。里边通过key对应value来传递给下一个回调对象。
yield item1提交最终的数据给items.py,如果还有数据在下一级网页,可以创建新的url,然后将item1的值赋予meta,继续请求新的url回调下一个parse_**
由于打赏数据是异步加载,需要在界面中用正则表达式提取id,然后重新构造新的reward_rul,由于是json网页,所以需要用方法json.load解析网页,取出我们要rewards_count
我在解析parse_info的时候,提取不出reward_count,生成的CSV文件是空的。于是打断点进行调试:运行debug时候,系统提示如下:
于是 想起来可能是因为这个reward_url网页出错,但是里边的json数据还是有的,尝试改一下reward_url地址中?count=20改为.json如下:

