如何用scrapy获取所有标题和文章?

时间:2018-01-09 09:10:08

标签: python django xpath scrapy

我目前正在抓取一些网络信息。 我不知道为什么,但它不能正常工作。 如果有人能纠正我的代码,我将不胜感激。

这只是一个例子,但我在这里要做的是从起始网址,访问其中列出的所有文章,并从每个文章中选取标题和文章。 (所有文章都像<script> function cancelUploadFile() { document.getElementById("my_form").reset(); } </script> <form id="my_form" method="post" enctype="multipart/form-data"> <div class="w3-grey" style="height:24px;width:0%" hidden id="progressBar"></div> <input type="file" id="file1" name="file1"> <input type="submit" value="Upload" onclick="uploadFile()"> <input type="submit" value="Cancel" onclick="cancelUploadFile()"> </form>

以下是我的代码。

非常感谢你的帮助!

http://www.bbc.com/sport/tennis/42610656

`

1 个答案:

答案 0 :(得分:0)

引用scrapy文档:

  

编写爬网蜘蛛规则时,请避免使用parse作为回调   CrawlSpider使用parse方法本身来实现其逻辑。   因此,如果您覆盖解析方法,则爬行蜘蛛将不再存在   工作

因此,通过覆盖parse方法,您可以使您定义的规则无效。

此外,链接提取器中的allow=['.*']是无操作,因此规则中的follow=True也没有回调。如果您希望规则同时解析项目并关注链接,只需指定回调并遵循,而不是创建两个规则。

另一个问题是parse方法本身。其中的xpath是从不存在的div中选择链接(尽管带有该id的部分)。
但是,如果您已经使用CrawlSpider,则应首先指定适当的规则,而不是覆盖parse

最后,我只想指出scrapy.contrib.spidersscrapy.contrib.linkextractors已被弃用;您应该使用scrapy.spidersscrapy.linkextractors代替。