我正在编写一个爬虫从网站上获取项目的名称。该网站每页有25个项目和多个页面(某些项目类型为200个)。
代码如下:
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from lonelyplanet.items import LonelyplanetItem
class LonelyplanetSpider(Craw
因此,我已经看到了如何使用scrapy的教程,现在我可以访问给定页面中的链接。但我想要做的是,给定一个页面,我想收集它的数据(元数据和摘要),我还想访问该页面中的链接并收集它们的数据。这是我到目前为止的代码(还没有收集到数据)
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.spider import BaseSpider
from scrapy.http import Request
我的问题与几乎完全相同
但是我有两个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个数据。
这里是spider.py:
import scrapy
from scrapy.loader import ItemLoader
from dts.items import DtItem
class dtSpider(scrapy.Spider):
name = 'dts'
urls = ['s','s','s','s']
def start_requests(self):
for url in self.urls:
yield scrapy.Re
全。我是Scrapy的新手,在同一个脚本中调用多个爬虫项目时遇到了一些困难。我有三个抓取项目,分别抓取不同的网页,并将数据存储到SQLite中。但是我不知道如何使用一个Python脚本来管理这些项目。以下是我尝试过的内容: 1.我在官方文档中看到使用了CrawlerProcess,但是这段代码不能通过管道将数据存储到SQLite中。示例代码如下:
import scrapy
from scrapy.crawler import CrawlerProcess
class MySpider1(scrapy.Spider):
# Your first spider definition
The Short:
如何在Scrapy中只检索带有.xpath()的标记名?
The Long:
我目前正在使用scrapy.Spider,并在parse()函数中使用response.selector.remove_namespaces()来保持简单。
我正试着做这样的事,但对Scrapy来说:
但是,我似乎不知道如何只检索标签的名称。只获取标记名的.xpath()命令是什么?
我有一个需要抓取数据的现有脚本(main.py)。
为了检索这些数据,我开始了一个简陋的项目。现在,main.py有没有办法作为项目生成器从scrapy中检索数据,而不是使用项目管道持久化数据?
像这样的东西真的很方便,但我不知道怎么做,如果它是可行的话。
for item in scrapy.process():
我在那里找到了一个潜在的解决方案:,使用多线程的队列。
即使我知道这种行为与分布式爬行不兼容,这也是Scrapy的初衷,但我还是有点惊讶,你不能在较小的项目中使用这一功能。
这对我来说不是问题,没有它我可以活下去,但我只是好奇它是否可能,以及如何。
今天,我了解到,scrapy.Request不会以与它们已经启动的顺序相同的顺序结束。
伪码示例:
class SomeSpider(scrapy.Spider):
def parse(self, response):
# get all ads(25) from ads list
for ad in adList():
add_url = findAddUrl()
yield scrapy.Request(add_url, ca
我正在创建一个用于web数据抓取的抓取器。共有58页,每页有12个产品。数据应该返回为58x12= 696个产品标题,但它只返回404个产品的数据。以下是我的代码 import scrapy
from fundrazr.items import FundrazrItem
from datetime import datetime
import re
class Fundrazr(scrapy.Spider):
name = "my_scraper"
# First Start Url
start_urls = ["https://perf
我试着从巴厘岛的酒店里提取所有的评论,这应该是我要走的路
首先定义star Scrapy来自所有与第一链接相关的酒店的页面(每页更改-oaXX-)从酒店Scrapy的页面上从每个酒店获取评论,从每个酒店 (每页更改-或X-)获得评论。5.访问每个用户的配置文件,查看并提取用户的所有意见。
from scrapy.item import Field
from scrapy.item import Item
from scrapy.spiders import CrawlSpider, Rule
from scrapy.selector import Selector
from scrapy.lo
我正在使用Scrapy CrawlSpider类来抓取电子商务网站的分类页面。问题是,大约5%的请求在5次重试后被拒绝,并且不会达到100%的已知类别。
我的解决方法涉及到第二个爬行器(scrapy.Spider),它从数据库中获取丢失的已知URL,并简单地重新抓取它们。这样我就达到了100%的成绩。
问题是,这是两个不同的爬虫,它们位于两个不同的python文件中,需要由cron作业分别触发。此外,我只是简单地将parse_item函数复制到另一个刮除器,如果需要的话,现在需要在这两个刮除器上进行更改。
class myspider(CrawlSpider):
name = '