我以极客公园为例,爬取文章标题,作者名,文章摘要。
我们打开chrome中的开发者工具,然后我们重新加载一下网页,你可以看到文章标题需要你点加载更多才能出现,之后你会看到如下显示:
我们在General中的Request Method看到是GET,说明这个请求方法是GET方法,之后你会发现并没有post方法,所以用Splash似乎不行。再多点加载更多让文章出现得更多,你会发现Request URL的变化只有page的页数。换句话说就是:
第一页是:https://mainssl.geekpark.net/api/v2?page=1
第二页是:https://mainssl.geekpark.net/api/v2?page=2
第三页是:https://mainssl.geekpark.net/api/v2?page=3
..........................
第n页是: https://mainssl.geekpark.net/api/v2?page=n
之后我们打开其中一页,比如第一页:
你会看到网页是以json形式存储的,并且一个page存储20篇文章,但要注意文章是从0开始的。(之后我们写代码是这里会很重要)
打开其中一篇文章你可以看到:
这时候你可以看到文章的标题,摘要,作者名,id,发表时间等等。然后开始写代码了~~
在item.py中我们先定义item数据结构:
之后写爬虫:
打开终端输入scrapy crawl geekpark。爬虫就会运行成功。但是我们并没有将数据存入,之后我在postgresql中建一个关于爬虫数据相关的表。并在scrapy项目中的pipeline.py写下如下代码:
之后再运行一次爬虫就可以了。数据在postgresql中就存成这样了: