Python Scrapy数百次输出相同的东西
我遵循了scrapy页面上的教程,并尝试编辑代码在wikipedia上进行练习。当我这样做时,它会输出页面中的文本,但它会这样做数百次。JSON文件和控制台包含反复打印的相同内容。我想这可能与功能有关?另外,sel.xpath和site.xpath之间有什么区别 谢谢 代码如下:Python Scrapy数百次输出相同的东西,python,scrapy,Python,Scrapy,我遵循了scrapy页面上的教程,并尝试编辑代码在wikipedia上进行练习。当我这样做时,它会输出页面中的文本,但它会这样做数百次。JSON文件和控制台包含反复打印的相同内容。我想这可能与功能有关?另外,sel.xpath和site.xpath之间有什么区别 谢谢 代码如下: from scrapy.spider import Spider from scrapy.selector import Selector from tutorial.items import DmozItem c
from scrapy.spider import Spider
from scrapy.selector import Selector
from tutorial.items import DmozItem
class DmozSpider(Spider):
name = "dmoz"
allowed_domains = ["wikipedia.com"]
start_urls = [
"http://en.wikipedia.org/wiki/Caesar_Hull"
]
def parse(self, response):
sel = Selector(response)
sites = sel.xpath('//div')
items =[]
for site in sites:
item = DmozItem()
item['title'] = sel.xpath('.//p/text()').extract()
items.append(item)
return items
如果希望第二个xpath相对于第一个xpath,而不是:
item['title'] = sel.xpath('.//p/text()').extract()
做:
当然,在//div
上循环创建尽可能多的div
运行
sel.xpath('.//p/text()')
与运行sel.xpath('//p/text()')
是一样的,因此一次又一次地得到相同的结果我明白了,谢谢,你明白为什么代码会多次打印相同的东西吗?我想我明白你的意思,但我不确定。对不起,我是新来的。我将//div更改为//p,但它仍然会重复显示结果。你能指出代码的哪一部分需要更改吗?请试着给出一个重复的例子。当我将它输出到JSON的txt文件时,我现在在文档中打印了25或30次相同的文本。我想我可能看到了发生了什么,但我不确定,循环每次添加一个新条目时都会重复前面的所有条目,因此到最后整个过程会重复很多次。您知道如何解决此问题,使每个项目只打印一次吗?
item['title'] = site.xpath('.//p/text()').extract()