我正在使用Scrapy从this website中获取数据。下面是蜘蛛的代码。在
class StackItem(scrapy.Item):
def __setitem__(self, key, value):
if key not in self.fields:
self.fields[key] = scrapy.Field()
self._values[key] = value
class betaSpider(CrawlSpider):
name = "betaSpider"
def __init__(self, *args, **kwargs):
super(betaSpider, self).__init__(*args, **kwargs)
self.start_urls = [kwargs.get('start_url')]
rules = (Rule (LinkExtractor(unique=True, allow=('.*\?id1=.*',),restrict_xpaths=('//a[@class="prevNext next"]',)), callback="parse_items", follow= True),)
def parse_items(self, response):
hxs = HtmlXPathSelector(response)
posts = hxs.select("//article[@class='classified']")
items = []
for post in posts:
item = StackItem()
item["job_role"] = post.select("div[@class='uu mb2px']/a/strong/text()").extract()
item["company"] = post.select("p[1]/text()").extract()
item["location"] = post.select("p[@class='mb5px b red']/text()").extract()
item["desc"] = post.select("details[@class='aj mb10px']/text()").extract()
item["read_more"] = post.select("div[@class='uu mb2px']/a/@href").extract()
items.append(item)
for item in items:
yield item
以下是物料管道的代码:
^{pr2}$这个很好用。现在,我必须使用相同的蜘蛛抓取以下网站(例如)。在
我必须刮去上述网站的所有标签,使用项目管道将其存储到CSV文件中。在
实际上,被废弃的网站名单是无穷无尽的。在这个项目中,用户将输入url并将废弃的结果返回给该用户。所以,我想要一个通用蜘蛛,可以刮任何网站。在
对于一个单一的网站来说,它运行良好。但是,对于结构不同的多个站点,如何实现呢? 破破烂烂的够解决吗?在
不同的spider会更好你可以使用API从脚本运行Scrapy,而不是运行Scrapy crawl的典型方式记住Scrapy是建立在Twisted异步网络库之上的,所以你需要在Twisted reactor中运行它。在
我认为你必须创建一个通用的spider来从differet获取数据网站。那可以通过添加网站一个接一个到蜘蛛和通用代码。在
如果网站完全不同,这将是非常庞大的代码。从您的要求,我们可以概括的代码,并作出蜘蛛,提供上述细节,如果任何网站是给定的。在
相关问题 更多 >
编程相关推荐