这是我的蜘蛛课:
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.selector import HtmlXPathSelector
from scrapy.http.request import Request
from scrapy.crawler import CrawlerProcess
from scrapy.linkextractors.sgml import SgmlLinkExtractor
import csv
class StackItem(scrapy.Item):
我正在抓取一些具有复杂层次信息的数据,需要将结果导出到json。
我将这些项定义为
class FamilyItem():
name = Field()
sons = Field()
class SonsItem():
name = Field()
grandsons = Field()
class GrandsonsItem():
name = Field()
age = Field()
weight = Field()
sex = Field()
当爬行器运行完成时,我将得到一个打印的项目输出,如下所示
{'nam
我希望防止Scrapy保存到DB重复项。为此,我使用了Scrapy教程中的“重复筛选器”部分中显示的相同策略,可以找到。
我写的是:
id = str(item['product'] + item['price'])
print id
if id in self.ids_seen:
raise DropItem("Duplicate item found!")
else:
self.ids_seen.add(id)
self.collection.insert(dict(item))
当在命令行中运行爬虫时,它会重复返回如此多的时间。当我在'items.append(item)‘前添加一个代码'items'i is’= i‘时,结果是最后一个数字,并且重复相同的时间。
所以这可能是使用return的问题。什么才是正确的?
# -*- coding: utf-8 -*-
from a.items import Item
from scrapy.selector import Selector
import scrapy
import json
class ASpider(scrapy.Spider):
name = "A"
a
在我的Scrapy项目中,我使用PyMongo将抓取的数据存储在MongoDB中。在以逐页的方式抓取网页时有重复的记录,我只想删除那些在插入到数据库中时具有相同名称的重复记录。请给我推荐最好的解决方案。下面是我用"pipelines.py"编写的代码。请指导我如何去除"process_item"方法中的重复项。我发现在互联网上很少有从数据库中删除重复项的查询,但我想要一个Python解决方案。
from pymongo import MongoClient
from scrapy.conf import settings
class MongoDBPipelin
我在Dart包中遇到了一些问题:如果添加了一个plus()解析器,那么“优先级规则”(“解析p1,如果不能解析p2顺序的选择”)似乎会被忽略。
import 'package:petitparser/petitparser.dart';
// This parser should check from left to right if a nestedTerm, e.g. '(0)' or '(()', exists.
// If this is not the case, then it looks if a singleCharacter
我的问题与几乎完全相同
但是我有两个For循环,所以创建一个新的条目将导致我丢失第一个刮过的页面中的数据。
基本结构是:
知道第一个网址。
循环通过已知的urls
- For loop for data and next url
- For loop for more data and next url
- Even more data and next url.
- Even more data and next url.
- Yield
每页有10-40条数据,但我有一个简单的代码,它可以查找1-2个数据。
我在windows 7的python2.7环境中安装了Scrapy,但是当我尝试使用scrapy startproject newProject启动一个新的Scrapy项目时,命令提示符显示了这个提示
'scrapy' is not recognized as an internal or external command,
operable program or batch file.
注意:
我也有python3.5,但没有刮伤
这个问题与不重复。
stockInfo.py包含:
import scrapy
import re
import pkgutil
class QuotesSpider(scrapy.Spider):
name = "stockInfo"
data = pkgutil.get_data("tutorial", "resources/urls.txt")
data = data.decode()
start_urls = data.split("\r\n")
def parse(self, response):
所以我在玩Scrapy,它是一组类,允许你进行web抓取,我想把一些数据放到数据库中,但我让truble在扩展scrapy库的同时导入MySQL方法。
下面是我的代码:
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.http import Request
import MySQLdb
class test(BaseSpider): #if i don't extend the class the MySQL works, but the Sc
我有以下的迷你基本蜘蛛,我使用从一个网站的所有链接。
from scrapy.item import Field, Item
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors import LinkExtractor
class SampleItem(Item):
link = Field()
class SampleSpider(CrawlSpider):
name = "sample_spider"
allowed_d